Android開發(fā)筆記(二十五)CoordinatorLayout + Appbar + ViewPager

http://www.itdecent.cn/p/4a77ae4cd82f
關(guān)于CoordinatorLayout 的寫的很好了,有空自己總結(jié)一個
記錄一下自己對微博個人主頁的做法:

先咕會兒,準備直接做databinding

  1. 首先是布局:




    然后做一個只有recycler的布局,用于做pager


具體xml:


  1. 創(chuàng)建一個pager的adapter
    因為這里每個fragment都需要userID的參數(shù),所以在初始化的參數(shù)里加了userID
public class UserPagerAdapter extends FragmentPagerAdapter {
    long userID;
    private static final String[] TAB_TITLES = new String[]{"主頁","微博","相冊"};


    public UserPagerAdapter(@NonNull FragmentManager fm, int behavior, long userID) {
        super(fm, behavior);
        this.userID = userID;
    }

    @Override
    public Fragment getItem(int position) {
        return UserPlaceholderFragment.newInstance(position + 1,userID);
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return TAB_TITLES[position];
    }

    @Override
    public int getCount() {
        return TAB_TITLES.length;
    }

對于UserPlaceholderFragment.newInstance為返回新建的一個fragment
新建使用的的函數(shù)如下,采用index來當做fragment的標識,userID是上面?zhèn)鬟M去的userID,userID通過adapter傳進fragment里(其實也可以用父fragment的viewmodel)
創(chuàng)建的時候用打包bundle把index和其他需要的數(shù)據(jù)放入fragment自帶的Argument里

    public static UserPlaceholderFragment newInstance(int index, long userID) {
        UserPlaceholderFragment fragment = new UserPlaceholderFragment();
        Bundle bundle = new Bundle();
        bundle.putInt(ARG_SECTION_NUMBER, index);
        bundle.putLong(ARG_ID, userID);
        fragment.setArguments(bundle);
        return fragment;
    }

fragment在創(chuàng)建的時候從自己的argument里獲得index和其他數(shù)據(jù)(userID),這里同時創(chuàng)建了一個與該子fragment綁定的UserPlaceholderViewModel,用于存放index和其他需要操作的數(shù)據(jù)。

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        userID = getArguments().getLong(ARG_ID);
        viewModel = new ViewModelProvider(this).get(UserPlaceholderViewModel.class);
        viewModel.setUserID(String.valueOf(userID));
        int index;
        if (getArguments() != null) {
            index = getArguments().getInt(ARG_SECTION_NUMBER);
        } else {
            index = 1;
        }
        viewModel.setIndex(index);
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容