紧接着对上一篇学习自定义的 ListView, 本篇学习 ViewPager,内容如下:
1.定义view页面要显示的内容(activity_one.xml 其他两个类似)
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="#FFADEFAA"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="one"/>
</LinearLayout>
2.自定义 ViewPager 的适配器
public class MyViewPager extends PagerAdapter {
private Context context = null;
private ArrayList<View> arrayList = null;
public MyViewPager(){
}
public MyViewPager(Context context, ArrayList<View> arrayList) {
this.context = context;
this.arrayList = arrayList;
}
@Override
public int getCount() {
// return 0;
//当前view的个数
return arrayList.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
// return false;
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
View view = arrayList.get(position);
container.addView(view);
return view;
// return super.instantiateItem(container, position);
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
// super.destroyItem(container, position, object);
View view = (View)object;
container.removeView(view);
}
}
getCount():获得viewpager中有多少个view
destroyItem():移除一个给定位置的页面。适配器有责任从容器中删除这个视图。 这是为了确保在finishUpdate(viewGroup)返回时视图能够被移除
instantiateItem()函数
1.将给定位置的view添加到ViewGroup(容器)中,创建并显示出来
2.返回一个代表新增页面的Object(key),通常都是直接返回view本身就可以了,当然你也可以 自定义自己的key,但是key和每个view要一一对应的关系
isViewFromObject(): 判断instantiateItem(ViewGroup, int)函数所返回来的Key与一个页面视图是否是 代表的同一个视图(即它俩是否是对应的,对应的表示同一个View),通常我们直接写 return view == object
3.Mainactivity 函数
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vpager_one = (ViewPager) findViewById(R.id.myViewPager);
aList = new ArrayList<View>();
LayoutInflater li = getLayoutInflater();
aList.add(li.inflate(R.layout.activity_one,null,false));
aList.add(li.inflate(R.layout.activity_two,null,false));
aList.add(li.inflate(R.layout.activity_three,null,false));
mAdapter = new MyViewPager(this,aList);
vpager_one.setAdapter(mAdapter);
}
参考地址:
http://www.runoob.com/w3cnote/android-tutorial-viewpager.html