Android:ViewPager为页卡内视图组件添加事件

在数据适配器PagerAdapter的初始化方法中添加按钮事件,这里是关键,首先判断当前的页卡编号。必须使用当前的view来获取按钮。

@Override
        public Object instantiateItem(View arg0, int arg1) {
            if (arg1 < 3) {
                ((ViewPager) arg0).addView(mListViews.get(arg1 % 3), 0);
            }
            // 测试页卡1内的按钮事件
            if (arg1 == 0) {
                Button btn = (Button) arg0.findViewById(R.id.btn);
                btn.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        new AlertDialog.Builder(MainActivity.this)
                                .setTitle("说明")
                                .setMessage("单个页卡内按钮事件测试")
                                .setNegativeButton("确定",
                                        new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(
                                                    DialogInterface dialog,
                                                    int which) {
                                            }
                                        }).show();
                    }
                });
            }
            return mListViews.get(arg1 % 3);
        }


如果不在这里面添加事件,那么在viewpager的视图经过切换后,原有的视图里组件事件将丢失。

viewpager.setOffscreenPageLimit(int num)可以设置预先加载的页面个数。因为每个页面都有若干个子页面,如果不预先把7个页面全加载完,那么在滑动几次后将丢失之前页面的一些子页面显示状态

另外,需要注意的是在ViewPager中,它除了加载当前页,还会加载当前页的左右页(无论它们实际可不可见)。除了当前页的View算是可见的,其左右页的View算是可见的(无论它们实际可不可见),即onWindowVisibilityChanged(int visibility)中的参数是View.VISIBLE。

posted @ 2013-04-26 17:00  leo_as南京  阅读(457)  评论(0编辑  收藏  举报