十月專案小結(Recycler下拉重新整理,上拉分頁載入)
阿新 • • 發佈:2018-12-03
Recycler上拉分頁載入、下拉重新整理
該需求採用RecyclerView、SwipeRefreshLayout以及第三方外掛BRVAH結合使用方式完成,SwipeRefreshLayout完成下拉重新整理、BRVAH完成上拉分頁載入
- build.gradle 配置說明
allprojects {
repositories {
…
maven { url ‘https://jitpack.io’ }
}
}
新增依賴:compile ‘com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30’
- Adapter 繼承BaseQuickAdapter,重寫父類的RecordRvAdapter、convert方法詳細地址
> public class PaymentRecordRvAdapter extends BaseQuickAdapter<PaymentRecordListBean.DataBean,BaseViewHolder> { private Context mContext; /** * @param layoutResId The layout resource id of each item. //內容的佈局 * @param data A new list is created out of this one to avoid mutable list //資料來源 */ public PaymentRecordRvAdapter(int layoutResId, List<DataBean> data,Context mContext) { super(layoutItemResId,dataBeans); this.mContext = mContext; } @Override protected void convert(BaseViewHolder helper, DataBean itemData) { //獲取相應控制元件例項、設定相應屬性 ImageView imageView = helper.getView(R.id.iv_icon); Glide.with(mContext).load(item.getIcon()).apply(new RequestOptions().centerCrop()).into(imageView); helper.setText(R.id.tv_charge_type,item.getExpenseName()) .setText(R.id.tv_time,DateUtils.formatDate(item.getBillTime(),DateUtils.DB_DATA_FORMAT)); } }
- layout.xml
//RecyclerView結合SwipeRefreshLayout實現下拉重新整理功能 <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/srl_refresh" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.RecyclerView android:layout_marginTop="@dimen/y15" android:id="@+id/rv_payment_record" android:layout_width="match_parent" android:layout_height="wrap_content"/> </android.support.v4.widget.SwipeRefreshLayout>
- .Activity
/**Description:初始化SwipeRefreshLayout的下拉重新整理監聽,整個生命週期有效*/
protected void initSwipeRefreshLayoutListener(){
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
......
adapterDataBeans.clear();//清空資料
quickAdapter.replaceData(adapterDataBeans);//呼叫QuickAdapter的replaceData通知資料清空
quickAdapter.setEnableLoadMore(true);//重新啟動下拉分頁載入響應
requestRecyclerDate();//啟動重新整理後初次資料載入
}
});
}
//初始化QuickAdapter監聽
@Override
public void initBrvahListener() {
//item點選事件監聽
quickAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
//do something
}
});
//上拉請求資料監聽
quickAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
@Override
public void onLoadMoreRequested() {
//上拉請求開始前,需要停止swipeRefreshLayout的下拉重新整理響應
swipeRefreshLayout.setEnabled(false);
requestRecyclerDate();
//上拉重新整理結束後,需要開啟swipeRefreshLayout的下拉重新整理響應
swipeRefreshLayout.setEnabled(true);
}
}, recyclerView);
//設定該方法,初次載入資料不足時,系統即會停止響應下次上拉載入資料請求
quickAdapter.disableLoadMoreIfNotFullPage();
}
/**Description:新增分頁資料*/
protected void addAdapterData(List<T> data){
if (data.size() != 0) {
pageNum++;
adapterDataBeans.addAll(data);
if (data.size() != PAGE_SIZE)
/**Description:完成本次請求,關閉上拉請求監聽響應*/
quickAdapter.loadMoreEnd();
else
/**Description:完成本次請求*/
quickAdapter.loadMoreComplete();
} else {
/**Description:完成本次請求,關閉上拉請求監聽響應*/
quickAdapter.loadMoreEnd();
}
}