【笔记】Android ViewPager学习笔记

前言

Android ViewPager学习笔记,本文介绍的是ViewPager2的使用方法

添加ViewPager2依赖

/app/build.gradle
1
2
3
4
5
dependencies {
...

implementation 'androidx.viewpager2:viewpager2:1.0.0'
}

在主布局中添加ViewPager

app/src/main/res/layout/activity\_main.xml
1
2
3
4
5
6
7
8
9
10
11
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<androidx.viewpager2.widget.ViewPager2
android:id="@+id/vp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</LinearLayout>

创建一个模板布局

  • 创建一个模板布局,在布局中添加各个页面都具有的控件

这里添加文本控件作为演示

app/src/main/res/layout/item\_page.xml
1
2
3
4
5
6
7
8
9
10
11
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rl">

<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</RelativeLayout>

创建适配器类

  • 创建ViewPagerAdapter适配器类

R.layout.item_page:指定模板布局

app/src/main/java/.../ViewPagerAdapter.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class ViewPagerAdapter extends RecyclerView.Adapter<ViewPagerAdapter.ViewPagerViewHolder> {

private List<String> titles = new ArrayList<>();

// 构造方法初始化数据
public ViewPagerAdapter() {
titles.add("page 1");
titles.add("page 2");
}

@NonNull
@Override
public ViewPagerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
// 对xml的解析
return new ViewPagerViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_page, parent, false));
}

// 进行需要对不同页面绑定不同数据
@Override
public void onBindViewHolder(@NonNull ViewPagerViewHolder holder, int position) {
holder.textView.setText(titles.get(position));
}

// 根据需要设置页面数
@Override
public int getItemCount() {
return 2;
}

// 加载各个页面都具有的控件
class ViewPagerViewHolder extends RecyclerView.ViewHolder {

RelativeLayout relativeLayout;
TextView textView;

public ViewPagerViewHolder(@NonNull View itemView) {
super(itemView);
relativeLayout = itemView.findViewById(R.id.rl);
textView = itemView.findViewById(R.id.tv);
}
}
}

在MainActivity中为ViewPager配置适配器

app/src/main/java/.../MainActivity.java
1
2
3
ViewPager2 viewPager2 = findViewById(R.id.vp);
ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter();
viewPager2.setAdapter(viewPagerAdapter);

完成

参考文献

哔哩哔哩——Android架构解析