我必須經常更新圖像列表(3秒),但更新後 - 滾動將頂部。
我認爲當你更新你的形象有可能你只是想保持你的RecyclerView
滾動以結束,那麼你可以簡單地這樣的代碼:
adapter = new ImageAdapter(imageAlbum);
recyclerView.SetAdapter(adapter);
recyclerView.ScrollToPosition(adapter.ItemCount - 1);
如果要滾動到更新圖片時的具體位置,目前沒有現在的Api,不像標準Android API,ScrollToPositionWithOffset
是Xamarin.Android中的虛擬方法,我們只能使用RecyclerView.ScrollToPosition
或LinearLayoutManager.ScrollToPosition
滾動到適配器中的特定項目。也有是獲得在Xamarin.Android第一個可見項目不存在API,我們需要建立我們LinearLayoutManager
從LinearLayoutManager
類繼承並重寫這些方法,我們可能需要使用,例如:
public class MyLinearLayoutManager : LinearLayoutManager
{
public MyLinearLayoutManager(Context context) : base(context)
{
}
public override int FindFirstVisibleItemPosition()
{
return base.FindFirstVisibleItemPosition();
}
public override void ScrollToPositionWithOffset(int position, int offset)
{
base.ScrollToPositionWithOffset(position, offset);
}
}
現在我們可以滾動到像標準Android的具體位置:
scrollListener = new MyOnScrollListener();
...
var item = rvManager.FindFirstVisibleItemPosition();
adapter = new ImageAdapter(imageAlbum);
rv.SetAdapter(adapter);
//offset value 200 is fake, you can calculate by yourself
rvManager.ScrollToPositionWithOffset(item, 200);
在Java中,我們有一個方法來獲得當前scrollX和scrollY爲'recyclerView.getScrollX()'和'recyclerView.getScrollY()'如果保存這些值,你可以使用'recyclerView.scrollTo(x,y)'滾動到舊的位置。 –
不工作:C – bigjoe1