Android PagerAdapter 学习

紧接着对上一篇学习自定义的 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值