Как написать метод кнопки onClick в viewpager?

Я хочу поднять сообщение о нажатии кнопки с помощью viewpager, а также мне нужна дополнительная информация о том, как получить доступ к представлениям в viewpager.

Я пробовал следующий код.... не работает

public class MyPagerAdapter extends PagerAdapter {

    @Override
    public int getCount() {
        return 3;
    }

    @Override
    public Object instantiateItem(final View collection, final int position) {
         v = new View(collection.getContext());
        LayoutInflater inflater =
                (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        int resId = 0;
        switch (position) {
        case 0:
            resId = R.layout.cate1;
            v = inflater.inflate(R.layout.cate1, null, false);
            add1 = (Button) v.findViewById(R.id.btnAdd);
            add1.setOnClickListener( new OnClickListener() {
                public void onClick(View m) {
                   Toast.makeText(collection.getContext(),"click",Toast.LENGTH_LONG).show();
                }
            });


            break;
        case 1:
            resId = R.layout.cate2;
            break;
        case 2:
            resId = R.layout.cate3;
            break;
        }

        View view = inflater.inflate(resId, null);
        ((ViewPager) collection).addView(view, 0);

        return view;
    }

    @Override
    public void destroyItem(final View arg0, final int arg1, final Object arg2) {
        ((ViewPager) arg0).removeView((View) arg2);

    }

    @Override
    public boolean isViewFromObject(final View arg0, final Object arg1) {
        return arg0 == ((View) arg1);

    }

    @Override
    public void finishUpdate(View arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void restoreState(Parcelable arg0, ClassLoader arg1) {
        // TODO Auto-generated method stub

    }

    @Override
    public Parcelable saveState() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void startUpdate(View arg0) {
        // TODO Auto-generated method stub

    }

    }

Я написал следующий код для кнопки onclick.... не работает..

      v = inflater.inflate(R.layout.cate1, null, false);
            add1 = (Button) v.findViewById(R.id.btnAdd);
            add1.setOnClickListener( new OnClickListener() {
                public void onClick(View m) {
                   Toast.makeText(collection.getContext(),"click",Toast.LENGTH_LONG).show();
                }
            });

ПОМОГИТЕ плз заранее спасибо.


person Madhav Palshikar    schedule 02.01.2012    source источник
comment
Можете ли вы уточнить «Я пробовал следующий код.... не работает». Что не работает? Какая у вас ошибка?   -  person Gallal    schedule 02.01.2012
comment
add1.setOnClickListener не работает.   -  person Madhav Palshikar    schedule 02.01.2012
comment
Он не делает то, что вы хотите? или вообще ничего не делает? или это исключение? Если он выдает исключение, что это за исключение?   -  person Gallal    schedule 02.01.2012
comment
он вообще ничего не делает... никаких ошибок ничего... есть ли у вас пример исходного кода viewpager с действиями кнопок...? Спасибо за ваш ответ.   -  person Madhav Palshikar    schedule 02.01.2012


Ответы (1)


Оставьте свой код без изменений, но измените:

    ((ViewPager) collection).addView(view, 0);

    return view;

to

    ((ViewPager) collection).addView(v, 0);

    return v;

вы сделали щелчок прямо на кнопке, которая была надута, затем вы надули другое представление с resId и отобразили его на экране, эта кнопка существует в памяти вашего приложения, но не где-либо еще, возвращая v, эта кнопка рисуется, и onclicklistener вызывается по клику.

person Shereef Marzouk    schedule 02.01.2012
comment
Возможно, github.com/Shereef/ViewPagerPlusExpandableList поможет вам лучше понять viewpager - person Shereef Marzouk; 03.01.2012