效果图
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4ae5cb088b24b2731f6fb2541faeb001.png)
使用流程
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();
}
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);
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();
}
@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);
}
}