@Override
public void destroyItem(View container, int position, Object object) {
}
@Override
public Object instantiateItem(View container, int position) {
}
这两个是过时的方法。
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
}
@Override
public 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;
}
}