RecyclerView上拉和下拉
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CNyUDOxMjM1ITMwIjMwIzLcdWbp9CXyVGdzFWbvw1dhJ3LcdWbp9CXiVHbjp2cvwVbvNmLlVGdpd2Lc9CX6MHc0RHaiojIsJye.png)
最近為了寫一個簡易的多選清單功能,使用了RecyclerView,發現如果資料太多的話會發生卡頓,是以決定使用分頁,也就是大家常見的上拉加載資料,也有下拉重新整理資料,我們這裡使用滾動事件 addOnScrollListener
來完成這個功能。
上拉加載
- 在
上添加監聽事件RecyclerView
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
});
- 當我們無法上拉以後,以及松開手指以後,觸發資料加載
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
// canScrollVertically參數是1是無法上拉
if (!recyclerView.canScrollVertically(1) && newState == RecyclerView.SCROLL_STATE_IDLE) {
// 實作資料加載
}
}
});
下拉重新整理
- 原理跟上拉一樣,隻是判斷無法下拉後,重新整理資料
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
// canScrollVertically參數是-1是無法上拉
if (!recyclerView.canScrollVertically(-1) && newState == RecyclerView.SCROLL_STATE_IDLE) {
// 實作資料加載
}
}
});