Ich habe eine recyclerview in meinem Android-Projekt, die Medieninhalte in jeder Ansicht anzeigt. Was ich versuche zu erreichen, ist, dass ich Medien abspielen/pausieren kann, während ich nach oben und unten scrolle. Ich muss die Adapterposition der vollständig sichtbaren Ansicht erhalten. Ich mache so etwas.layoutmanager.FindFirstCompletelyVisibleItemPosition liefert immer -1
In meiner Tätigkeit Fragment habe ich dies:
layoutmanager = new LinearLayoutManager(Activity);
adapter = new FeedAdapter(vid, userName, this.Context);
feeditem.SetLayoutManager(layoutmanager);
feeditem.SetAdapter(adapter);
var onScrollListener = new XamarinRecyclerViewOnScrollListener(Activity, layoutmanager, adapter);
Das Scroll-Listener Ereignis wie folgt aussieht:
public override void OnScrollStateChanged(RecyclerView recyclerView, int newState)
{
base.OnScrollStateChanged(recyclerView, newState);
if (newState == (int)ScrollState.Idle)
{
layoutmanager = (LinearLayoutManager)recyclerView.GetLayoutManager();
int firstVisiblePosition = layoutmanager.FindFirstCompletelyVisibleItemPosition();
int visible = layoutmanager.FindFirstVisibleItemPosition();
int last = layoutmanager.FindLastVisibleItemPosition();
if (firstVisiblePosition >= 0)
{
if (oldFocusedLayout != null)
{
Toast.MakeText(ctx, "Stop Video", ToastLength.Long).Show();
}
}
currentFocusedLayout = layoutmanager.FindViewByPosition(firstVisiblePosition);
Toast.MakeText(ctx, "Play video", ToastLength.Long).Show();
oldFocusedLayout = currentFocusedLayout;
}
}
feeditem.AddOnScrollListener(onScrollListener);
Das Problem ist, dass der Linearlayout Manager Methode FindFirstCompletelyVisibleItemPosition
immer -1 zurück, auch wenn die Die Ansicht ist vollständig sichtbar. Andere Methoden wie FindFirstVisibleItemPosition
und FindLastVisibleItemPosition
gibt die richtige Position der Ansicht.
Irgendeine Idee, was könnte das Problem hier sein?