ViewPager中的过时方法和循环的实现

来源:互联网 发布:手机连发软件 编辑:程序博客网 时间:2024/06/16 22:37
@Overridepublic void destroyItem(View container, int position, Object object) {}@Overridepublic Object instantiateItem(View container, int position) {}

这两个是过时的方法。


@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {}@Overridepublic Object instantiateItem(ViewGroup container, int position) {}


方式(一)

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="${relativePackage}.${activityClass}">    <android.support.v4.view.ViewPager        android:id="@+id/pager"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_marginTop="16dp"        android:layout_weight="1"/></LinearLayout>


public class PagerActivityV4ViewPager extends FragmentActivity {    private TextView[] mTextViews;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_pager);        final android.support.v4.view.ViewPager pager = (android.support.v4.view.ViewPager) findViewById(R.id.pager);        final MyAdapter adapter = new MyAdapter();        pager.setAdapter(adapter);        // 为了左右可以循环        pager.setCurrentItem(Integer.MAX_VALUE / 2);        mTextViews = new TextView[5];        for(int i=0; i< mTextViews.length; i++){            TextView textView = new TextView(this);            textView.setGravity(Gravity.CENTER);            textView.setTextSize(20);            textView.setText("data" + i);            mTextViews[i] = textView;        }    }    public class MyAdapter extends android.support.v4.view.PagerAdapter {        @Override        public int getCount() {            return Integer.MAX_VALUE;        }        @Override        public boolean isViewFromObject(View arg0, Object arg1) {            return arg0 == arg1;        }        @Override        public void destroyItem(View container, int position, Object object) {            ((android.support.v4.view.ViewPager) container).removeView(mTextViews[position % mTextViews.length]);        }        @Override        public Object instantiateItem(View container, int position) {            ((android.support.v4.view.ViewPager) container).addView(mTextViews[position % mTextViews.length], 0);            return mTextViews[position % mTextViews.length];        }    }}


方式(二)

http://flyingcat2013.blog.51cto.com/7061638/1575015

Android使用ViewPager实现左右循环滑动及轮播效果

private class ImageAdapter extends PagerAdapter{                 private ArrayList<ImageView> viewlist;         public ImageAdapter(ArrayList<ImageView> viewlist) {            this.viewlist = viewlist;        }         @Override        public int getCount() {            //设置成最大,使用户看不到边界            return Integer.MAX_VALUE;        }         @Override        public boolean isViewFromObject(View arg0, Object arg1) {            return arg0==arg1;        }         @Override           public void destroyItem(ViewGroup container, int position,                   Object object) {               //Warning:不要在这里调用removeView         }           @Override           public Object instantiateItem(ViewGroup container, int position) {             //对ViewPager页号求模取出View列表中要显示的项             position %= viewlist.size();             if (position<0){                 position = viewlist.size()+position;             }             ImageView view = viewlist.get(position);             //如果View已经在之前添加到了一个父组件,则必须先remove,否则会抛出IllegalStateException。             ViewParent vp =view.getParent();             if (vp!=null){                 ViewGroup parent = (ViewGroup)vp;                 parent.removeView(view);             }             container.addView(view);               //add listeners here if necessary             return view;           }      }


0 0
原创粉丝点击