Как передать строку Arraylist в адаптер другого класса? - PullRequest
0 голосов
/ 04 марта 2012

Я хотел бы передать массив pictureActivity.java другому классу imageAdapter.java. Я получаю результат imgPath на тосте, но я не знаю, как переместить строку в другой класс.

PictureActivity.java

ArrayList<HashMap<String, String>> imgList = new ArrayList<HashMap<String, String>>();

    try {
        imageLink = json.getJSONArray(TAG_IMG);

        for(int i = 0; i < imageLink.length(); i++){
            JSONObject c = imageLink.getJSONObject(i);
            String imgPath = c.getString(TAG_PATH);

            HashMap<String, String> map = new HashMap<String, String>();
            map.put(TAG_PATH, imgPath);

            imgList.add(map);
            Toast.makeText(this, map.get(TAG_PATH), Toast.LENGTH_LONG).show();
        }
    }catch (JSONException e) {
        e.printStackTrace();
    }
    ((Gallery) findViewById(R.id.gallery))
            .setAdapter(new ImageAdapter(this));

ImageAdapter.java

public class ImageAdapter extends BaseAdapter {

    private Context myContext;
    public String[] myRemoteImages = {
            //How to add imagepath here??
    };

Я хотел поместить строку массива в myRemoteImages.

1 Ответ

1 голос
/ 04 марта 2012

вы можете передать свой массив адаптер при инициализации объекта класса адаптера:

((Gallery) findViewById(R.id.gallery))
            .setAdapter(new ImageAdapter(this, imgList));

и в своем классе адаптера создайте конструктор, подобный этому:

public class ImageAdapter extends BaseAdapter {
  ArrayList<HashMap<String, String>> data = null;
  public String[] myRemoteImages;
  private Context myContext;

  public ImageAdapter(Context context, ArrayList<HashMap<String, String>> data){
   this.mContext = context;
   this.data = data;

   myRemoteImages = new String[this.data.size()];
   for(int i=0; i<this.data.size(); i++){
     HashMap<String, String> map = this.data.get(i);
     myRemoteImages[i] = map.get(TAG_PATH).toString();
   }

  }
}

после получения ArrayList в вашем классе адаптера вы можете извлечь из него любое значение, которое хотите.

...