废话不多说我们直接上代码
我们首先创建两个Fragment
FragmentA布局需要写Tab栏与ViewPager对应
<LinearLayout android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.weekday02demo3.view.fragment.ProjectFragment"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- TODO: Update blank fragment layout -->
<android.support.design.widget.TabLayout
android:id="@+id/tab"
***app:tabMode="scrollable"***
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
随后我们需要给tab栏赋值,我们这边是通过解析玩安卓接口获取的数据
// 项目分类 http://www.wanandroid.com/project/tree/json
// 项目列表数据 http://www.wanandroid.com/project/list/1/json?cid=294
我们首先在FragmentB界面定义一个方法来获取数据里所对应的ID[将FragmentA与FragmentB建立连接]
public static Fragment isListFragment(int id){
ListFragment listFragment = new ListFragment();
Bundle bundle = new Bundle();
bundle.putInt("id",id);
listFragment.setArguments(bundle);
return listFragment;
}
然后回到FragmentA界面通过For循环把Id值发送到FragmentB然后通过Bean类给Tab栏赋值
ProjectBean projectBean = gson.fromJson(data, ProjectBean.class);
List<ProjectBean.DataBean> projectTabList = projectBean.getData();
ArrayList<Fragment> fragments = new ArrayList<>();
if ( projectBean != null && projectTabList != null && projectTabList.size() > 0 ){
for (ProjectBean.DataBean dataBean : projectTabList) {
Fragment listFragment = ListFragment.isListFragment(dataBean.getId());
fragments.add(listFragment);
}
FragmentAdapterTwo fragmentAdapterTwo = new FragmentAdapterTwo(getChildFragmentManager(), fragments, projectTabList);
vp.setAdapter(fragmentAdapterTwo);
tab.setupWithViewPager(vp);
}
FragmentA的适配器[FragmentAdapterTwo]
public FragmentAdapterTwo(FragmentManager fm, ArrayList<Fragment> fragments, List<ProjectBean.DataBean> projectTabList) {
super(fm);
this.fragments = fragments;
this.projectTabList = projectTabList;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return projectTabList.get(position).getName();
}
回到FragmentB界面获取对应的ID解析页面数据
在onCreate()方法里获取Id
Bundle arguments = getArguments();
id = arguments.getInt("id");
接下来就是RecycleView绑定适配器的操作了,本片Fragment复用到这里就结束了希望对大家有所帮助







网友评论