当ViewPager中没有视图时,为空白的
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.viewpager.widget.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent">
androidx.viewpager.widget.ViewPager>
LinearLayout>
其他view自行修改
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="Layout 1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="50dp"
android:background="#99D2C5">
TextView>
LinearLayout>
保存在一个集合里
LayoutInflater from = getLayoutInflater().from(this);
View view1 = from.inflate(R.layout.layout_1, null);
View view2 = from.inflate(R.layout.layout_2, null);
View view3 = from.inflate(R.layout.layout_3, null);
List<View> list = new ArrayList<>();
list.add(view1);
list.add(view2);
list.add(view3);
获取ViewPager
ViewPager viewPager = findViewById(R.id.vp);
MyAdapter myAdapter = new MyAdapter(list); //MyAdapter为自定义的adapter配置类
viewPager.setAdapter(myAdapter);
MyAdapter为自定义的adapter配置类,具体配置如下(进行Adapter配置)
ViewPager的Adapter类是继承自PagerAdapter.
1、getCount()
获得viewpager中有多少个view
2、instantiateltem()
1.将给定位置的view添加到viewGroup(容器)中,创建并显示出来
2返回一个代表新增页面的object(key),通常都是直接返回view本身就可以了,当然你也可以自定义自己的key,但是key和每个view要一一对应的关系
3、isViewFromObject()
判断instantiateltem(ViewGroup, int)函数所返回来的Key与一个页面视图是否是代表的同一个视图即它俩是否是对应的,对应的表示同一个View),通常我们直接写return view == object
4、destroyltem()
移除一个给定位置的页面。适配器有责任从容器中删除这个视图。这是为了确保在finishUpdate(viewGroup)返回时视图能够被移除。而另外两个方法则是涉及到一个key的东东:
下面为配置MyAdapter类的代码
package com.example.fourthdemo_2_viewpager;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
import java.util.List;
public class MyAdapter extends PagerAdapter {
private List<View> viewList ;
public MyAdapter(List<View> viewList) {
this.viewList = viewList;
}
//View 添加到 ViewPager容器中
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
container.addView(viewList.get(position));
return viewList.get(position);
}
//从ViewPager 中 删除一个View
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView(viewList.get(position));
}
//判断instantiateItem返回的视图的key与一个视图代表的是否相对应
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
//获得Viewpager中view数量
@Override
public int getCount() {
return viewList.size();
}
}
package com.example.fourthdemo_2_viewpager;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.RelativeLayout;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LayoutInflater from = getLayoutInflater().from(this);
View view1 = from.inflate(R.layout.layout_1, null);
View view2 = from.inflate(R.layout.layout_2, null);
View view3 = from.inflate(R.layout.layout_3, null);
List<View> list = new ArrayList<>();
list.add(view1);
list.add(view2);
list.add(view3);
ViewPager viewPager = findViewById(R.id.vp);
MyAdapter myAdapter = new MyAdapter(list);
viewPager.setAdapter(myAdapter);
}
}