Tablayout 多个界面使用一个fragment 的实例
生活随笔
收集整理的這篇文章主要介紹了
Tablayout 多个界面使用一个fragment 的实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個主要還是adapter 里面 添加list 就行了
這里直接上代碼吧 ,我剛寫的demo 看的時候看adapter 就行了
布局代碼:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><android.support.design.widget.TabLayoutandroid:id="@+id/detail_food_tablayout"android:layout_width="match_parent"android:layout_height="40dp"android:background="#ffffff"app:tabIndicatorColor="#5BC8F2"app:tabMode="fixed"app:tabSelectedTextColor="#373737"app:tabTextAppearance="@style/TabLayoutTextStyle"app:tabTextColor="#9B9B9B" /><android.support.v4.view.ViewPagerandroid:id="@+id/detail_food_viewpager"android:layout_width="match_parent"android:layout_height="0dp"android:layout_marginTop="0.8dp"android:layout_weight="1" /></LinearLayout>
tablayout + viewpager?
public class DetailsActivity extends AppCompatActivity {private TabLayout tabLayout;private ViewPager viewPager;private List<Fragment> fragments;private List<String> titles;private mPagerAdapter adapter;String[] str = {"大海", "藍天", "白云"};@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.details_activity_layout);fragments = new ArrayList<>();titles = new ArrayList<>();tabLayout = findViewById(R.id.detail_food_tablayout);viewPager = findViewById(R.id.detail_food_viewpager);for (int i = 0; i < str.length; i++) {titles.add(str[i]);fragments.add(DetailsFragment.newInstance(i));}adapter = new mPagerAdapter(getSupportFragmentManager(), titles, fragments);viewPager.setAdapter(adapter);tabLayout.setupWithViewPager(viewPager);}private class mPagerAdapter extends FragmentPagerAdapter {private List<Fragment> mFragmentList;private List<String> mTitles;public mPagerAdapter(FragmentManager fm, List<String> titles, List<Fragment> fragList) {super(fm);mTitles = titles;mFragmentList = fragList;}@Overridepublic Fragment getItem(int position) {return mFragmentList.size() != 0 ? mFragmentList.get(position) : null;}@Overridepublic int getCount() {return mFragmentList == null ? 0 : mFragmentList.size();}@Overridepublic CharSequence getPageTitle(int position) {return mTitles.size() != 0 ? mTitles.get(position) : "";}@Overridepublic void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {}}}
fragment 代碼
?
public class DetailsFragment extends Fragment {private int index;public static DetailsFragment newInstance(int index) {DetailsFragment df = new DetailsFragment();Bundle bundle = new Bundle();bundle.putInt("index", index);df.setArguments(bundle);return df;}@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (getArguments() != null) {index = getArguments().getInt("index");Log.e("-------index", String.valueOf(index));}}@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.details_fragment_layout, container, false);return view;}@Overridepublic void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);}
}
Fragment 里面請求服務器加載數據即可。。。。
注意事項 ,由于viewPager 緩存問題第一次進來的還把第二個界面的數據也會加載了,這個問題可以使用Fragment的
懶加載來處理。。。。
?
?
總結
以上是生活随笔為你收集整理的Tablayout 多个界面使用一个fragment 的实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新浪微博可以通过手机号码搜人吗,如果此手
- 下一篇: 我想学化妆,大概要多少钱