第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

如何獲取RecyclerView瀑布流樣式下滑動到底的狀態(tài)呢?

如何獲取到瀑布流滑動到底的狀態(tài)呢?應用場景是網(wǎng)絡加載圖片,滑動到底了,需要分頁加載下一頁的時候。

正在回答

2 回答

sorry,剛才直接在這塊寫的 忘記了判斷是否是最后一個item,下面改正代碼。

@Override
public?void?onScrollStateChanged(int?state)?{
????//?如果停止滑動
????if(state?==?SCROLL_STATE_IDLE){
????????LayoutManager?layoutManager?=?getLayoutManager();
????????if(getLayoutManager()?instanceof?StaggeredGridLayoutManager){
????????????//?獲取布局管理器
????????????StaggeredGridLayoutManager?layout?=
????????????????????(StaggeredGridLayoutManager)layoutManager;
????????????//?用來記錄lastItem的position
????????????//?由于瀑布流有多個列?所以此處用數(shù)組存儲
????????????int?column?=?layout.getColumnCountForAccessibility(null,null);
????????????int?positions[]?=?new?int[column];
????????????//?獲取lastItem的positions
????????????layout.findLastVisibleItemPositions(positions);
????????????for(int?i=0;i<positions.length?;?i++){
????????????????/**
?????????????????*?判斷l(xiāng)astItem的底邊到recyclerView頂部的距離
?????????????????*?是否小于recyclerView的高度
?????????????????*?如果小于或等于?說明滾動到了底部
?????????????????*/
????????????????//?剛才忘了寫判斷是否是最后一個item了
????????????????if(positions[i]?>=?(layout.getItemCount()-column)
????????????????????????&&?layout.findViewByPosition(positions[i]).getBottom()?<=?getHeight()){
????????????????????/**
?????????????????????*?此處實現(xiàn)你的業(yè)務邏輯
?????????????????????*/
????????????????????Log.e("到底了","true");
????????????????????break;
????????????????}

????????????}
????????}else?if(getLayoutManager()?instanceof?LinearLayoutManager){

????????????LinearLayoutManager?layout?=
????????????????????(LinearLayoutManager)?layoutManager;
????????????int?position?=?layout.findLastVisibleItemPosition();
????????????//?剛才忘了寫判斷是否是最后一個item了
????????????if(position-1?==?layout.getItemCount()
????????????????????&&?layout.findViewByPosition(position).getBottom()?<=?getHeight()){
????????????????Log.e("到底了","true");
????????????}

????????}

????}
????super.onScrollStateChanged(state);
}
1 回復 有任何疑惑可以回復我~
#1

qq_信念_0

position都是+1 不是-1...
2016-01-14 回復 有任何疑惑可以回復我~

RecyclerView的OnScrollLinstener和listView不一樣,沒辦法獲取lastItemPostion。

但是它的LayouManager可以找到lastItem和FirstItem的position(注意:因為StaggeredGridLayoutManager
可能有多個列,所以StaggeredGridLayoutManager獲取到的lastItem可能有多個)。

這里為了復用,我通過重寫onScrollStateChanged自定義了RecyclerView實現(xiàn),當然,你也使用監(jiān)聽器的方式實現(xiàn),核心代碼如下所示:

@Override
public?void?onScrollStateChanged(int?state)?{
????//?如果停止滑動
????if(state?==?SCROLL_STATE_IDLE){
????????//?獲取布局管理器
????????StaggeredGridLayoutManager?layout?=
????????????????(StaggeredGridLayoutManager)?getLayoutManager();
????????//?用來記錄lastItem的position
????????//?由于瀑布流有多個列?所以此處用數(shù)組存儲
????????int?positions[]?=?new
????????????????int[layout.getColumnCountForAccessibility(null,null)];
????????//?獲取lastItem的positions
????????/**
?????????*?其他布局管理器可使用同樣方式獲取
?????????*/
????????layout.findLastVisibleItemPositions(positions);
????????for(int?i=0;i<positions.length?;?i++){
????????????/**
?????????????*?判斷l(xiāng)astItem的底邊到recyclerView頂部的距離
?????????????*?是否小于recyclerView的高度
?????????????*?如果小于或等于?說明滾動到了底部
?????????????*/
?????????????
????????????if(layout.findViewByPosition(positions[i]).getBottom()?<=?getHeight()){
????????????????/**
?????????????????*?此處實現(xiàn)你的業(yè)務邏輯
?????????????????*/
????????????????Log.e("到底了","true");
????????????????return;
????????????}

????????}

????}
????super.onScrollStateChanged(state);
}


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
明日之星-RecyclerView
  • 參與學習       40763    人
  • 解答問題       131    個

帶領(lǐng)大家學習百變RecyclerView,絕對干貨,告別加班不是夢

進入課程

如何獲取RecyclerView瀑布流樣式下滑動到底的狀態(tài)呢?

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號