android Viewpager 动态添加载滑动

此demo实现在添加动态添加View按钮时给ViewPager动态添加一个页面 实现方式比较简单 如果想滑动动态添加 在OnPageChangedListener里面实现 实现方式雷同  好了废话就不多少  直接上懂重点  这里面最为关键的是pagerAdapter

[java]  view plain copy
  1. class MyPageAdapter extends PagerAdapter {  
  2.   
  3.         private ArrayList listViews;// content  
  4.   
  5.         private int size;// 页数  
  6.   
  7.         public MyPageAdapter(ArrayList listViews) {// 构造函数  
  8.                                                             // 初始化viewpager的时候给的一个页面  
  9.             this.listViews = listViews;  
  10.             size = listViews == null ? 0 : listViews.size();  
  11.         }  
  12.   
  13.         public void setListViews(ArrayList listViews) {// 自己写的一个方法用来添加数据  这个可是重点啊  
  14.             this.listViews = listViews;  
  15.             size = listViews == null ? 0 : listViews.size();  
  16.         }  
  17.   
  18.         @Override  
  19.         public int getCount() {// 返回数量  
  20.             return size;  
  21.         }  
  22.   
  23.         @Override  
  24.         public void destroyItem(View arg0, int arg1, Object arg2) {// 销毁view对象  
  25.             ((ViewPager) arg0).removeView(listViews.get(arg1 % size));  
  26.         }  
  27.   
  28.         @Override  
  29.         public void finishUpdate(View arg0) {  
  30.         }  
  31.   
  32.         @Override  
  33.         public Object instantiateItem(View arg0, int arg1) {// 返回view对象  
  34.             try {  
  35.                 ((ViewPager) arg0).addView(listViews.get(arg1 % size), 0);  
  36.             } catch (Exception e) {  
  37.                 Log.e("zhou""exception:" + e.getMessage());  
  38.             }  
  39.             return listViews.get(arg1 % size);  
  40.         }  
  41.   
  42.         @Override  
  43.         public boolean isViewFromObject(View arg0, Object arg1) {  
  44.             return arg0 == arg1;  
  45.         }  
  46.   
  47.     }  

然后就是页面监听器

[java]  view plain copy
  1. /** 
  2.      * 页面监听事件 
  3.      */  
  4.     private OnPageChangeListener pageChangeListener = new OnPageChangeListener() {  
  5.   
  6.         public void onPageSelected(int arg0) {// 页面选择响应函数  
  7.         // 如果需要实现页面滑动时动态添加 请在此判断arg0的值  
  8.         // 当然此方式在必须在初始化ViewPager的时候给的页数必须>2  
  9.         // 因为给1页的话 ViewPager是响应不了此函数的  
  10.         // 例:  
  11.             System.out.println("================"+arg0);  
  12.             if (arg0 == pager.getAdapter().getCount() - 1) {// 滑动到最后一页  
  13.                 count++;  
  14.                 initListViews(count);// listViews添加数据  
  15.                 adapter.setListViews(listViews);// 重构adapter对象  这是一个很重要  
  16.                 adapter.notifyDataSetChanged();// 刷新  
  17.             }  
  18.   
  19.             if (mToast == null)  
  20.                 mToast = Toast.makeText(MainActivity.this"翻到了第" + (arg0 + 1)  
  21.                         + "页"1);  
  22.             else {  
  23.                 mToast.setText("翻到了第" + (arg0 + 1) + "页");  
  24.             }  
  25.             mToast.show();  
  26.         }  
  27.   
  28.         public void onPageScrolled(int arg0, float arg1, int arg2) {// 滑动中。。。  
  29.   
  30.         }  
  31.   
  32.         public void onPageScrollStateChanged(int arg0) {// 滑动状态改变  
  33.   
  34.         }  
  35.     };  

然后就是添加的view对象


[java]  view plain copy
  1. /** 
  2.      * listViews添加view对象 
  3.      *  
  4.      * @param count 
  5.      */  
  6.     private void initListViews(int count) {  
  7.         if (listViews == null)  
  8.             listViews = new ArrayList();  
  9.         TextView mTextView = new TextView(this);// 构造textView对象  
  10.         mTextView.setText("第" + count + "页");// 设置文字  
  11.         // 设置布局  
  12.         mTextView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,  
  13.                 LayoutParams.MATCH_PARENT));  
  14.         // 设置位置  
  15.         mTextView.setGravity(Gravity.CENTER);  
  16.         listViews.add(mTextView);// 添加view  
  17.     }  

oncreate方法里面

[java]  view plain copy
  1. @Override  
  2.     public void onCreate(Bundle savedInstanceState) {  
  3.         super.onCreate(savedInstanceState);  
  4.         setContentView(R.layout.activity_main);  
  5.   
  6.         Button button = (Button) findViewById(R.id.button);// 点击为Viewpager添加View对象  
  7.         button.setOnClickListener(new View.OnClickListener() {// 设置监听  
  8.   
  9.             public void onClick(View v) {  
  10.                 count++;  
  11.                 initListViews(count);// listViews添加数据  
  12.                 adapter.setListViews(listViews);// 重构adapter对象  
  13.                 adapter.notifyDataSetChanged();// 刷新  
  14.             }  
  15.         });//  
  16.   
  17.         initListViews(count);// 添加View对象  
  18.         pager = (ViewPager) findViewById(R.id.viewpager);// 找到ViewPager  
  19.         pager.setOnPageChangeListener(pageChangeListener);// 设置页面滑动监听  
  20. //      initListViews(count);//  
  21.         adapter = new MyPageAdapter(listViews);// 构造adapter  
  22.         pager.setAdapter(adapter);// 设置适配器  
  23.     }  

你可能感兴趣的:(java,Eclipse,android开发)