Android RecyclerView滾動定位

2021-08-02 06:02:16 字數 1156 閱讀 3971

本文出自:【m家傑的部落格】

概述 recyclerview在安卓開發中非常實用,而且簡單易用,但是在實際開發中一直有乙個問題困擾著我,就是定位問題,實際的專案中總是會遇到這樣的需求:檢索recyclerview的某一項(各個項的高度不確定),然後定位這一項,將它顯示在頂部。用recyclerview的預設移動的方法並不能實現這一點(個人感覺官方可能出於效能考慮才不實現這一點)。這篇部落格就講解下我個人是如何實現這個需求的。

recyclerview提供的用於控制移動的方法有2個 

-scrolltoposition(int)

這個方法的作用是顯示指定項,就是把你想置頂的項顯示出來,但是在螢幕的什麼位置是不管的,只要那一項現在看得到了,那它就罷工了! 

-scrollby(int x,int y)

這個方法是自己去控制移動的距離,單位應該是畫素。

使用scrolltoposition時,移動到前面的項時,它缺省會將要顯示的項置頂,但是移動到後面的項時,位置就說不好了(看它心情!)一般會顯示在最後乙個。用過的應該都有所了解。 

使用scrollby時就需要自己計算高度或者寬度。在動態的布局中且各項樣式高度可能都不一樣的情況下,自己計算高度是很有難度的。

上面說了這麼多廢話,結論就是這2個方法都不能很好解決問題,但是,當他們2個結合使用的時候,我們的問題就變的好解決很多了!

思路是:先用scrolltoposition,將要置頂的項先移動顯示出來,然後計算這一項離頂部的距離,用scrollby完成最後的100公尺!

先傳入要置頂第幾項,然後區分情況處理

private

void

movetoposition(int n) else

if ( n <= lastitem )else

}

recyclerview滾動監聽

class

recyclerviewlistener

extends

recyclerview.onscrolllistener}}

}

[csdn]

[github]

android RecyclerView區域性重新整理

這種效果肯定是不行的,於是查了下資料,發現需要呼叫recyclerview的notifyitemchanged int position,object payload 的方法,這個payload需要傳乙個不為null的引數 引數值隨便填,只要不為null就行 mrecycleviewadapter....

android recyclerView 更新資料

今天寫東西的時候做搜尋更新recyclerview發現notifydatasetchanged這個方法怎玩都更新不來 log列印的資料list的資料也更新,但是item就是沒變,最後發現adapter每次載入的都是同乙個位址的集合,而自己更新資料時是二個不同位址的集合資料,鑑於此種情況只能使用第三者...

Android RecyclerView設定空布局

1 自定義乙個emptyrecyclerview繼承recyclerview 2 採用adapterdataobserver觀察者模式來監聽資料的變化,如果有資料就隱藏空布局,反之,則顯示。view memptyview private adapterdataobserver emptyobserv...