Передайте Integer в BaseAdapter - PullRequest
       4

Передайте Integer в BaseAdapter

2 голосов
/ 22 августа 2011

Я пытаюсь передать массив целых чисел в базовый адаптер, чтобы A.class передавал массив целых чисел в BaseAdapter в B.class. Вот как я передаю целочисленный массив в A.Class (отправитель):

int [] mThumb = {
                     R.drawable.image1_thumb, R.drawable.image2_thumb, R.drawable.image3_thumb,
                     R.drawable.image4_thumb, R.drawable.image5_thumb, R.drawable.image6_thumb,
                     R.drawable.image7_thumb, R.drawable.image8_thumb, R.drawable.image9_thumb,
                     R.drawable.image10_thumb};


        Bundle b=new Bundle();
        b.putIntArray("mThumbSent", mThumb);
        Intent startSwitcher = new Intent(A.this, B.class);
        startSwitcher.putExtras(b);

И в моем BaseAdapter в действии B:

public class ImageSwitch1 extends Activity Extends ...{
onCreate....
[redacted]
}

private ImageSwitcher mSwitcher;


public class ImageAdapter extends BaseAdapter {

   Bundle b=this.getIntent().getExtras();
    int[] mThumb = b.getIntArray("mThumbSent");

     public ImageAdapter(Context c) {

        mContext = c;
    }

    public int getCount() {

    return mThumb.length; //this used to say return mThumbIds

    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        ImageView im = new ImageView(mContext);
        im.setImageResource(mThumb[position]);
        im.setAdjustViewBounds(true);
        im.setLayoutParams(new Gallery.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        im.setBackgroundResource(R.drawable.picture_frame);


        return im;
    }

    private Context mContext;

}
}

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

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

getIntent () будет доступно в вашем классе B.

Вы можете поместить Bundle или целочисленный массив в конструктор вашего ImageAdapter

public class ImageAdapter extends BaseAdapter {

    public ImageAdapter(Context c, Bundle b) {
        int[] mThumb = b.getIntArray("mThumbSent");
        mContext = c;
    }

    .....
}

В вашей деятельности B создайте свойАдаптировать таким образом:

ImageAdapter adapter = new ImageAdapter(yourcontext,getIntent().getExtras());

Где вы хотите использовать свой адаптер?В ListView?Тогда было бы достаточно создать подкласс ListAdapter вместо BaseAdapter.

1 голос
/ 22 августа 2011

Обновите конструктор вашего ImageAdapter так, чтобы он принимал целочисленный массив, например, так:

int[] mResources;

public ImageAdapter(Context c, int[] resources) {
    mResources = resources;
    mContext = c;
}

Затем при инициализации вашего адаптера в вашей деятельности просто передайте ему дополнительный массив int:

ImageAdapter adapter = new ImageAdapter(context, intArray);
...