本文出自:【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...