ich den Code wie unten bin mit dem sichtbaren Element im Inneren des recyclerviewErste das sichtbare Element in der RecyclerView
In der Seite meiner Fragment-Aktivität zu erhalten habe ich:
layoutmanager = new LinearLayoutManager(Activity);
adapter = new FeedAdapter(vid, userName, this.Context);
feeditem.SetLayoutManager(layoutmanager);
feeditem.SetAdapter(adapter);
var onScrollListener = new XamarinRecyclerViewOnScrollListener(Activity, layoutmanager, adapter);
feeditem.AddOnScrollListener(onScrollListener);
und der Event-Handler-Klasse das wie folgt aussieht:
public class XamarinRecyclerViewOnScrollListener : RecyclerView.OnScrollListener
{
public delegate void LoadMoreEventHandler(object sender, EventArgs e);
public event LoadMoreEventHandler LoadMoreEvent;
private LinearLayoutManager layoutmanager;
private Action StateChange;
private FeedAdapter adapter;
private View currentFocusedLayout, oldFocusedLayout;
private Context ctx;
public XamarinRecyclerViewOnScrollListener(LinearLayoutManager layoutManager)
{
this.layoutmanager = layoutManager;
}
public XamarinRecyclerViewOnScrollListener(Context ctx, LinearLayoutManager layoutmanager, FeedAdapter adapter)
{
// TODO: Complete member initialization
this.layoutmanager = layoutmanager;
this.adapter = adapter;
this.ctx = ctx;
//this.StateChange = StateChange;
}
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();
if (firstVisiblePosition >= 0)
{
if (oldFocusedLayout != null)
{
Toast.MakeText(ctx, "Stop Video", ToastLength.Long).Show();
}
}
currentFocusedLayout = layoutmanager.FindViewByPosition(firstVisiblePosition);
//VideoView vv_dashboard = (VideoView)currentFocusedLayout.findViewById(R.id.vv_dashboard);
////to play video of selected recylerview, videosData is an array-list which is send to recyclerview adapter to fill the view. Here we getting that specific video which is displayed through recyclerview.
//playVideo(videosData.get(positionView));
Toast.MakeText(ctx, "Play video", ToastLength.Long).Show();
oldFocusedLayout = currentFocusedLayout;
}
}
}
layoutmanager.FindFirstCompletelyVisibleItemPosition()
immer -1 zurück. Ich möchte das Objekt in der Liste, die auf dem Bildschirm sichtbar ist, auswählen und dann etwas damit machen. Ich habe verschiedene Lösungen ausprobiert, aber keiner von ihnen hat funktioniert. Was ist der richtige Weg, um dies zu erreichen?
kann bitte jemand helfen ?? –