ViewPager入门使用之PagerAdapter

ViewPager入门使用之PagerAdapter

Android小彩虹2021-07-16 2:38:2930A+A-

1 ViewPager 简介

ViewPager是Android的一个视图滑动切换组件,该组件可通过手势滑动完成View的切换,一般是用来做APP的引导页或者实现图片轮播,和ListView、GridView等组件一样需要一个Adapter来将我们的视图进行绑定。
ViewPager使用的是PagerAdapter,还有FragmentPageAdapter和FragmentStatePagerAdapter,本篇着重介绍PagerAdaper的使用。

2 PagerAdapter的使用

要使用PagerAdapter,我们需要重写其方法

getCount:得到ViewPager中View的个数

destroyItem:移除一个给定位置的View

instantiateItem:实例化给定位置的View,并返回一个对象

isViewFromObject:判断instantiateItem(ViewGroup, int)函数所返回来的对象与一个页面视图是否是代表的同一个视图(即它俩是否是对应的,对应的表示同一个View),通常我们直接写 return view == object!

3 关键代码

view_pager_content.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout  xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"  xmlns:app="http://schemas.android.com/apk/res-auto">  <TextView  android:id="@+id/vc_text"  android:text="text"  android:textSize="40sp"  app:layout_constraintTop_toTopOf="parent"  app:layout_constraintBottom_toBottomOf="parent"  app:layout_constraintLeft_toLeftOf="parent"  app:layout_constraintRight_toRightOf="parent"  android:layout_width="wrap_content"  android:layout_height="wrap_content" /> </android.support.constraint.ConstraintLayout> 

自定义的PagerAdapter

class MyPagerAdapter extends PagerAdapter{
 private ArrayList<View> views;   public MyPagerAdapter(ArrayList<View> views){  this.views = views;  }  @Override  public int getCount() {  return views.size();  }   @Override  public Object instantiateItem(ViewGroup container, int position) {  View view = views.get(position);  final int[] colors = {  Color.YELLOW,  Color.GREEN,  Color.RED,  Color.WHITE  };  view.setBackgroundColor(colors[position]);  ((TextView)view.findViewById(R.id.vc_text)).setText(""+position);  container.addView(view);  return view;  }   @Override  public boolean isViewFromObject(View view, Object object) {  return view == object;  }   @Override  public void destroyItem(ViewGroup container, int position, Object object) {  container.removeView(views.get(position));  } } 

Activity

public class ViewPagerActivity extends AppCompatActivity {
 @BindView(R.id.view_pager)  ViewPager viewPager;  @Override  protected void onCreate(@Nullable Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.view_pager_main);  ButterKnife.bind(this);  LayoutInflater inflater = getLayoutInflater();  final ArrayList<View> views = new ArrayList<>();  views.add(inflater.inflate(R.layout.view_pager_content,null));  views.add(inflater.inflate(R.layout.view_pager_content,null));  views.add(inflater.inflate(R.layout.view_pager_content,null));  views.add(inflater.inflate(R.layout.view_pager_content,null));  MyPagerAdapter adapter = new MyPagerAdapter(views);  viewPager.setAdapter(adapter);  } } 

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1

联系我们