Как сделать возможность выбора группы картинок в ImageAdapter? Help

Рейтинг: 0Ответов: 1Опубликовано: 18.02.2015

Привет, закончились мысли, пишу вам. Как в public int getCount() создать возможность выбора коллекции (определенной группы) картинок для галереи Thumbslbs,Thumbslbs2,Thumbslbs3 и т.д.?

public class ImageAdapter extends BaseAdapter implements SpinnerAdapter {
    private Context mcontext;
    int j;
    public static Integer[] Thumbslbs = { R.drawable.a1, R.drawable.a2,
            R.drawable.a3, R.drawable.a4, R.drawable.a5, R.drawable.a6,
            R.drawable.a7, R.drawable.a8, R.drawable.a9, R.drawable.a10, };

    public static Integer[] Thumbslbs2 = { R.drawable.a11, R.drawable.a12,
            R.drawable.a13, R.drawable.a14, R.drawable.a15, };

    public static Integer[] Thumbslbs3 = { R.drawable.a11, };

    public ImageAdapter(Context Context) {
        // TODO Auto-generated constructor stub
        mcontext = Context;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView ImageView = null;
        if (convertView == null) {
            ImageView = new ImageView(mcontext);
            ImageView.setLayoutParams(new Gallery.LayoutParams(115, 100));
        } else {
            ImageView = (ImageView) convertView;
        }

        ImageView.setImageResource(Thumbslbs[position]);
        return ImageView;
    }

    @Override
    **public int getCount() {
        switch (R.id.detailsPhone) {
        case 111:
            return Thumbslbs.length;
        case 222:
            return Thumbslbs2.length;
        default:
            return Thumbslbs3.length;
        }
    }**

}

Ответы

▲ 1

Ну... Э-э-э... Создайте переменную в адаптере и по ней отдавайте в нужном методе нужное значение...

Есть несколько вариантов:

  1. Можно назначить новый адаптер, передав через конструктор int, по коему отдавать нужное число в методе public int getCount(). В данный же момент вы делаете там выбор по неизменному числу, получая всегда один и тот же ответ. Также у вас в getView() идёт выбор картинки из одного и того же массива, а нужно выбирать из какого. Т.е. сделайте переменную класса, коя будет в конструкторе по переданному int назначать нужный массив картинок. Далее в getView() назначайте картинки из этого массива.

  2. Можно сделать метод изменения массива адаптера. Т.е. передаёте в него int, по нему назначаете как в первом варианте переменной класса нужный массив и вызывайте в этом методе notifyDataSetChanged() метод адаптера. Он обновит список с уже новыми данными.