前言:只需要创建一个fragment,就可以实现左右滑动,跟传值给对应的fragment页。
xml布局:
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#EBEBEB"
app:tabIndicatorColor="@color/color_red"
app:tabIndicatorFullWidth="false"
app:tabMode="scrollable"
app:tabRippleColor="@null"
app:tabSelectedTextColor="@color/color_red" />
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
创建内部类:
class JDAdapter extends FragmentPagerAdapter {
public JDAdapter(@androidx.annotation.NonNull @NonNull FragmentManager fm) {
super(fm);
}
@androidx.annotation.NonNull
@NonNull
@Override
public Fragment getItem(int position) {
// 这里是传值
JDFragment fragment = new JDFragment();
Bundle bundle = new Bundle();
bundle.putString("code", data.get(position).getCode());
fragment.setArguments(bundle);
return fragment;
}
// data 是请求出来的集合
@Override
public int getCount() {
return data.size();
}
// 这里是设置 tablayout 的标题
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return data.get(position).getName();
}
}
使用内部类:
view_pager.setAdapter(new JDAdapter(getSupportFragmentManager()));
tab_layout.setupWithViewPager(view_pager);
fragment 接收传来的值:
在onCreateView中写入即可
Bundle arguments = getArguments();
assert arguments != null;
code = arguments.getString("code");