Android XTabLayout + ViewPager 的简单使用


效果图

在这里插入图片描述

使用流程

1.SelectScribePicActivity (主界面)
2.ScribePicFragmentAdapter (viewpager的适配器)
3.ScribePicFragment (ViewPager中每个子页面的fragment)
4.ScribePicRVAdapter (ScribePicFragment中recyclerView的适配器)

SelectScribePicActivity

public class SelectScribePicActivity extends BaseActivity {

    private static final String TAG = "SelectScribePicActivity";
    @BindView(R.id.xTabLayout)
    XTabLayout xTabLayout;
    @BindView(R.id.viewPager)
    ViewPager viewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_select_scribe_pic);
        ButterKnife.bind(this);
        initXTabLayout();
    }

    /**
     * 从网络上请求标签,并设置到XTab中
     */
    private void initXTabLayout() {
        HttpRequest2
                .getScribePicTag()
                .subscribe(new Observer<ListResult<ScribePicTag>>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(ListResult<ScribePicTag> scribePicTagListResult) {
                        List<ScribePicTag> scribePicTags = scribePicTagListResult.list;
                        Log.e(TAG, "onNext: scribePicTags=\n" + scribePicTags);
                        ScribePicFragmentAdapter adapter = new ScribePicFragmentAdapter(getSupportFragmentManager(), scribePicTags);
                        viewPager.setAdapter(adapter);
                        //绑定ViewPager
                        xTabLayout.setupWithViewPager(viewPager);
                    }
                });
    }
}

ScribePicFragmentAdapter


public class ScribePicFragmentAdapter extends FragmentStatePagerAdapter {

    private List<ScribePicTag> tagList;

    public ScribePicFragmentAdapter(FragmentManager fm, List<ScribePicTag> tagList) {
        super(fm);
        this.tagList = tagList;
    }

    @Override
    public Fragment getItem(int position) {
        return ScribePicFragment.getInstance(Integer.parseInt(tagList.get(position).getId()));
    }

    @Override
    public int getCount() {
        return tagList.size();
    }

    /**
     * 这里设置对应于XTabLayout的标签名。
     *
     * @param position
     * @return
     */
    @Override
    public CharSequence getPageTitle(int position) {
        return tagList.get(position).getName();
    }
}

ScribePicFragment

public class ScribePicFragment extends BaseFragment2 {
    private static final String TAG = "ScribePicFragment";
    @BindView(R.id.recyclerView)
    RecyclerView recyclerView;
    @BindView(R.id.smartRefreshLayout)
    SmartRefreshLayout smartRefreshLayout;

    private int pageIndex = 1;

    public static ScribePicFragment getInstance(int tagId) {
        ScribePicFragment fragment = new ScribePicFragment();
        fragment.setType(tagId);
        return fragment;
    }

    @Override
    public int getLayoutId() {
        return R.layout.fragment_book_decorate_online;
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        getData(pageIndex);
        //请求对应页面的数据
        smartRefreshLayout
                .setOnLoadMoreListener(new OnLoadMoreListener() {
                    @Override
                    public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
                        getData(++pageIndex);
                        refreshLayout.finishLoadMore(500);
                    }
                })
                .setOnRefreshListener(new OnRefreshListener() {
                    @Override
                    public void onRefresh(@NonNull RefreshLayout refreshLayout) {
                        pageIndex = 1;
                        getData(pageIndex);
                        refreshLayout.finishRefresh(500);
                    }
                });
    }

    private ScribePicRVAdapter rvAdapter;

    private void getData(int pageIndex) {
        if (rvAdapter == null || pageIndex == 1) {
            rvAdapter = new ScribePicRVAdapter();
            recyclerView.setAdapter(rvAdapter);
            recyclerView.setLayoutManager(new GridLayoutManager(getContext(), 3, GridLayoutManager.VERTICAL, false));
        }

        HttpRequest2
                .getScribePic(getType(), pageIndex)
                .subscribe(new Observer<ListResult<ScribePic>>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(ListResult<ScribePic> scribePicListResult) {
                        List<ScribePic> scribePicList = scribePicListResult.list;
                        LogUtils.d(scribePicList);
                        rvAdapter.addData(scribePicList);
                        rvAdapter.notifyDataSetChanged();
                    }
                });
    }


}

ScribePicRVAdapter

public class ScribePicRVAdapter extends BaseQuickAdapter<ScribePic, BaseViewHolder> {

    public ScribePicRVAdapter() {
        super(R.layout.item_recycler_scribe_pic);
    }

    @Override
    protected void convert(BaseViewHolder helper, ScribePic item) {
        ImageView imageView = helper.getView(R.id.imageView);
        GlideHelper.showImage(mContext, item.getPre_img(), imageView);
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值