Ich muss die Liste der Bilder oft aktualisieren (3 Sek.), Aber nach dem Update - Scroll geht nach oben.
Ich denke, es ist möglich, Sie wollen einfach nur Ihre RecyclerView
halten bis zum Ende gescrollt werden, wenn Sie Ihre Bilder aktualisieren, dann können Sie einfach folgenden Code:
adapter = new ImageAdapter(imageAlbum);
recyclerView.SetAdapter(adapter);
recyclerView.ScrollToPosition(adapter.ItemCount - 1);
Wenn Sie blättern möchten an die spezifische Position, wenn Sie Ihre Bilder aktualisieren, gibt es keine aktuelle Api für jetzt, nicht wie die Standard Android API, ScrollToPositionWithOffset
ist eine virtuelle Methode in Xamarin.Android, können wir nur zu dem bestimmten Element im Adapter mit RecyclerView.ScrollToPosition
oder LinearLayoutManager.ScrollToPosition
scrollen . Auch gibt es keine vorhanden API für das erste sichtbare Element in Xamarin.Android bekommen, müssen wir unsere LinearLayoutManager
die von LinearLayoutManager
Klasse erben schaffen und solche Methoden außer Kraft setzen wir müssen verwenden, zum Beispiel:
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);
}
}
Jetzt sind wir scrollen wie Standard-Android auf die spezifische Position:
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);
In Java haben wir eine Methode aktuelle scrollX und Scrolly als 'recyclerView.getScrollX()' und 'recyclerView.getScrollY() erhalten', wenn Sie diese Werte speichern, Sie können 'recycleView.scrollTo (x, y)' verwenden, um zur alten Position zu blättern. –
Funktioniert nicht: C – bigjoe1