Проблема адаптера галереи для Android - PullRequest
0 голосов
/ 04 июля 2011

У меня три галереи на одном экране. И теперь я установил класс Адаптер для этих галерей с различными ресурсами. Но все мои галереи заполняются последним набором входных ресурсов, который я дал для своей третьей галереи. Вот мой код,

    gallery_one.setAdapter(new ImageAdapter(this,Config.Jewel_Images));
    gallery_two.setAdapter(new ImageAdapter(this,Config.designs_Images));
    gallery_three.setAdapter(new ImageAdapter(this,Config.recommended_Images));

public class ImageAdapter extends BaseAdapter {
    int mGalleryItemBackground;
    private Context mContext;

    public ImageAdapter(Context c) {
        mContext = c;
        TypedArray a = obtainStyledAttributes(R.styleable.HelloGallery);
        // mGalleryItemBackground = a.getResourceId(
        // R.styleable.HelloGallery_android_galleryItemBackground, 0);
        a.recycle();

    }
    public ImageAdapter(Context c,Integer gallery[]) {
        mContext = c;
        mImageIds=gallery;
    }
    public int getCount() {
        return mImageIds.length;
    }

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

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

    public View getView(int arg0, View arg1, ViewGroup arg2) {
        ImageView i = new ImageView(mContext);
        pos = arg0;
        i.setImageResource(mImageIds[arg0]);
        i.setLayoutParams(new Gallery.LayoutParams((screen_width/3),(screen_height/6)));
        i.setScaleType(ImageView.ScaleType.FIT_XY);
        // i.setBackgroundResource(mGalleryItemBackground);
        return i;
    }
}

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

Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

1 голос
/ 04 июля 2011
 mImageIds=gallery;

Определить mImageIds внутри CustomAdapter ... Я полагаю, поскольку mImageIds объявлено глобально, его значение перезаписывается при каждой установке адаптера.

0 голосов
/ 20 января 2013

Попробуйте этот адаптер:

public class ImageAdapter extends BaseAdapter {

    private Context ctx;
    int imageBackground;

    public ImageAdapter(Context c) {
        ctx = c;
        TypedArray ta = obtainStyledAttributes(R.styleable.Gallery1);
        imageBackground = ta.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 1);
        ta.recycle();
    }

    public int getCount() {

        return pics.length;
    }

    public Object getItem(int arg0) {

        return arg0;
    }

    public long getItemId(int arg0) {

        return arg0;
    }

    public View getView(int arg0, View arg1, ViewGroup arg2) {
        ImageView iv = new ImageView(ctx);
        iv.setImageResource(pics[arg0]);
        iv.setScaleType(ImageView.ScaleType.FIT_XY);
        iv.setLayoutParams(new Gallery.LayoutParams(150,120));
        iv.setBackgroundResource(imageBackground);
        return iv;
    }

}
...