2 znl 12 znl_12 于 2013.01.22 17:39 提问

在 viewpager 中如何创建 button onClick 方法

我想使用viewpager在按钮点击时Toast一个消息,也想了解更多关于如何访问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

    }

    }

然后用下面的代码实现button 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();
                }
            });

add1.setOnClickListener 不能执行,也没有报错。总之,想要实现的button action 没有执行。是什么问题呢?

1个回答

LiDaming_and
LiDaming_and   2013.01.23 10:10
已采纳

把代码中的

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

    return view;

改成

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

    return v;
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!