RecyclerView搭配BRVAH實現上拉重新整理的簡單使用
阿新 • • 發佈:2018-12-03
RecyclerView搭配BRVAH實現上拉重新整理的簡單使用
- build.gradle 配置說明
新增資源庫新增資源庫
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
新增依賴
dependencies {
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:VERSION_CODE'
}
2.Adapter
繼承BaseQuickAdapter,重寫父類的PaymentRecordRvAdapter、convert方法
public class PaymentRecordRvAdapter extends BaseQuickAdapter<PaymentRecordListBean.DataBean,BaseViewHolder> { /** * Same as QuickAdapter#QuickAdapter(Context,int) but with * some initialization data. * * @param layoutItemResId The layout resource id of each item. //子item佈局 * @param dataBeans A new list is created out of this one to avoid mutable list //資料來源 */ public PaymentRecordRvAdapter(int layoutItemResId, List<DataBean> dataBeans) { super(layoutItemResId,dataBeans); } /** *Description:item的子控制元件監聽事件 *@param layoutItemResId The ViewHolder of child item. //子item的ViewHolder *@param itemData The data of child item. //子item的資料來源 */ @Override protected void convert(BaseViewHolder helper, DataBean itemData) { helper.setText(R.id.tv_repair_history_recycler_view_item_charge_type,item.getExpenseName()) .setText(R.id.tv_repair_history_recycler_view_item_charge_time,DateUtils.formatDate(item.getBillTime(),DateUtils.DB_DATA_FORMAT)); } }
- Activity
public class PaymentRecordActivity extends AppCompatActivity implements View.OnClickListener { private final int PAGE_SIZE = 10 ; private int pageNum; private boolean firstRefresh; private LinearLayoutManager recyclerViewManager; private List<PaymentRecordListBean.DataBean> adapterDataBeans; private PaymentRecordRvAdapter PaymentRecordRvAdapter; private RecyclerView rvPaymentRecord; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_bill_history); initView(); initData(); } private void initView() { rvPaymentRecord = findViewById(R.id.rv_payment_record); } private void initData() { pageNum = 1; firstRefresh = true; adapterDataBeans = new ArrayList<>(); refreshRecyclerView(houseId); } public void refreshRecyclerView(String houseId) { ApiBuilder builder = new ApiBuilder() .Url(URLConstant.GET_PAYMENT_RECORD) .Params("pageNum", pageNum + "") .Params("pageSize", PAGE_SIZE + ""); ApiClient.getInstance().doGet(builder, new CallBack<PaymentRecordListBean>() { @Override public void onResponse(PaymentRecordListBean data) { //do something if(data.getData().size() != 0 && firstRefresh){ pageNum++; if (PaymentRecordRvAdapter == null) { adapterDataBeans.addAll(data.getData()); PaymentRecordRvAdapter = new PaymentRecordRvAdapter(R.layout.bill_history_recyclerview_item, adapterDataBeans); rvPaymentRecord.setAdapter(PaymentRecordRvAdapter); rvPaymentRecord.setLayoutManager(new LinearLayoutManager(PaymentRecordActivity.this)); firstRefresh = false; initRvRepairHistoryListener(); } }else{ if(data.getData().size()!=0){ pageNum++; adapterDataBeans.addAll( data.getData()); if (data.getData().size() != PAGE_SIZE) PaymentRecordRvAdapter.loadMoreEnd();//資料全部載入完成,再次上拉,不再發送資料請求 else PaymentRecordRvAdapter.loadMoreComplete();//本次資料載入完成,再次上拉,繼續傳送資料請求 }else{ PaymentRecordRvAdapter.loadMoreEnd();//資料全部載入完成,再次上拉,不再發送資料請求 } } } @Override public void onFail(String msg) { //......do something } }, PaymentRecordListBean.class); } public void initRvRepairHistoryListener() { /** * Description:設定item的監聽事件以及上拉重新整理 */ PaymentRecordRvAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { @Override public void onItemClick(BaseQuickAdapter adapter, View view, int position) { //......do something /*PaymentRecordDetailActivity.actionStart(PaymentRecordActivity.this,adapterDataBeans.get(position).getId());*/ } }); /** * Description:設定item上拉重新整理的回撥 */ PaymentRecordRvAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() { @Override public void onLoadMoreRequested() { //......do something /* refreshRecyclerView(houseId);*/ } }, rvPaymentRecord); /** * Description:設定該方法,避免首次請求資料資料時,由於資料量不足以充滿螢幕的情況下,自動發起二次請求 */ PaymentRecordRvAdapter.disableLoadMoreIfNotFullPage(); } }