2016-03-23 5 views
-1

asyncTaskを使用してビットマップのリストをフラグメントに送信したいFragment_ListView.class、このフラグメントクラスにしたいasyncTaskからのビットマップトークンを持つlistViewのアダプタを設定しますが、私はそれを行う方法がわかりません。asyncTaskからフラグメントにArrayList(ビットマップ)を送信してArrayadapterで使用する方法

非同期タスク

@Override 
protected void onPostExecute(ArrayList<Bitmap> bitmapArrayList) { 
    super.onPostExecute(bitmapArrayList); 
    loading.dismiss(); 
    // now after getting images from server , i want to send this bitmapArrayList 
    // to Fragment_ListView where i set the adapter of the 
} 

@Override 
protected ArrayList<Bitmap> doInBackground(String... params) { 
    imageList = new ArrayList(); 
    String add1 = "http://192.168.1.11/save/load_image_from_db.php?id=1"; 
    String add2 = "http://192.168.1.11/save/load_image_from_db.php?id=2"; 
    String add3 = "http://192.168.1.11/save/load_image_from_db.php?id=3"; 
    URL url; 
    Bitmap image = null; 
    String[] adds = {add1, add2, add3}; 
    for (int i = 0; i < adds.length; i++) { 
     try { 
      url = new URL(adds[i]); 
      HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
      image = BitmapFactory.decodeStream(connection.getInputStream()); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     imageList.add(image); 
     image = null; 
    } 
    return imageList; 

OnCreate関数

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    listfrg = new Fragment_ListView(); 
    getFragmentManager().beginTransaction().add(R.id.frml, listfrg).commit(); 
} 

MainActivityのFragment_ListView:

public class Fragment_ListView extends Fragment { 

ListView mListView; 
static ArrayList<Bitmap> bitmaps; 
static MySimpleArrayAdapter adapter; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.frglist, container, false); 
    mListView = (ListView) view.findViewById(R.id.listView); 
    bitmaps = new ArrayList<>(); 
    adapter = new MySimpleArrayAdapter(getActivity(), bitmaps); 
    mListView.setAdapter(adapter); 
    return view; 
} 

答えて

0

SOMETこのよう興

私はクラスに今、あなたServerRequest

public class ServerRequest { 
    Context context; 

    public ServerRequest(Context context) { 
     this.context = context; 
    } 

    public void doAsyncTask(BitMapArrayCallBack bitmapCallback) { 
     new MyAsyncTask(bitmapCallback).execute(); 
    } 


    public class MyAsyncTask extends AsyncTask<Void, Void, Void> { 
     private BitMapArrayCallBack bitmapCallback; 
     public MyAsyncTask(BitMapArrayCallBack bitmapCallback) { 
      this.bitmapCallback = bitmapCallback; 
     } 
     //call do in background etc.. 
    @Override 
     protected void onPostExecute(ArrayList<Bitmap> bitmapArrayList) { 
      super.onPostExecute(bitmapArrayList); 
      loading.dismiss(); 
      bitmapCallback.bitmapArray(bitmapArrayList); 
      // This will hold and return your arraylist 
     } 
    } 

} 

を前提としますので、その後AsyncTaskに...私は自分のクラス名を知らない

public interface BitMapArrayCallBack { 
    abstract void bitmapArray(ArrayList<Bitmap> bitmaps); 
} 

新しいインタフェースファイルを作成します。フラグメントリストビューでasynctaskを呼び出す必要があります

public class Fragment_ListView extends Fragment { 

ListView mListView; 
static MySimpleArrayAdapter adapter; 
private ServerRequest serverRequest; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.frglist, container, false); 
    mListView = (ListView) view.findViewById(R.id.listView); 

    serverRequest = new ServerRequest(getActivity); 

    serverRequest.doAsyncTask(new BitMapArrayCallBack { 
     @Override 
     void bitMapArray(ArrayList<Bitmap> bitmaps) { 
      // in here you have access to the bitmaps array 

      adapter = new MySimpleArrayAdapter(getActivity(), bitmaps); 
      mListView.setAdapter(adapter); 
     } 

    }) 


    return view; 
} 
関連する問題