课堂笔记
搜索结果加载更多
<com.lcodecore.tkrefreshlayout.TwinklingRefreshLayout
android:id="@+id/search_result_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/search_results"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorViewPagerBg"
android:overScrollMode="never" />
</com.lcodecore.tkrefreshlayout.TwinklingRefreshLayout>
@BindView(R.id.search_result_container)
public TwinklingRefreshLayout refreshContainer;
- TwinklingRefreshLayout 设置可以加载更多,不能下拉刷新
@Override
protected void initView() {
refreshContainer.setEnableLoadmore(true);
refreshContainer.setEnableRefresh(false);
......
}
refreshContainer.setOnRefreshListener(new RefreshListenerAdapter() {
@Override
public void onLoadMore(TwinklingRefreshLayout refreshLayout) {
super.onLoadMore(refreshLayout);
if (mSearchPresenter != null) {
mSearchPresenter.loaderMore();
}
}
});
- 这样 View 层里 onMoreLoaded 就有数据了,把加载到的更多结果添加到适配器中,并结束加载更多
@Override
public void onMoreLoaded(SearchResult result) {
refreshContainer.finishLoadmore();
List<SearchResult.DataBean.TbkDgMaterialOptionalResponseBean.ResultListBean.MapDataBean> moreData
= result.getData().getTbk_dg_material_optional_response().getResult_list().getMap_data();
mHomePagerContentAdapter.addData(moreData);
ToastUtil.showToast("加载了" + moreData.size() + "个宝贝!");
}
public void addData(List<? extends ILinerItemInfo> contents) {
int size = mData.size();
mData.addAll(contents);
notifyItemRangeChanged(size, contents.size());
}
- 同时处理加载更多数据为空和加载更多是网络出错的情况
@Override
public void onMoreLoadedError() {
refreshContainer.finishLoadmore();
ToastUtil.showToast("网络错误,请稍后重试");
}
@Override
public void onMoreLoadedEmpty() {
refreshContainer.finishLoadmore();
ToastUtil.showToast("没有更多宝贝了");
}
@Override
public void onError() {
setUpState(State.ERROR);
}
@Override
public void onLoading() {
setUpState(State.LOADING);
}
@Override
public void onEmpty() {
setUpState(State.EMPTY);
}
@Override
protected void onRetryClick() {
if (mSearchPresenter != null) {
mSearchPresenter.reSearch();
}
}
- 里面还有可以优化的地方,刚打开APP的时候没网时,搜索页面的显示内容
跳转到淘口令界面
mHomePagerContentAdapter.setOnListItemClickListener(new HomePagerContentAdapter.OnListItemClickListener() {
@Override
public void onItemClick(IBaseInfo item) {
TicketUtil.toTicketPage(getContext(), item);
}
});
视频链接