Tôi có một recyclerview trong dự án Android của tôi hiển thị nội dung phương tiện trong mỗi chế độ xem. Những gì tôi đang cố gắng đạt được là tôi có thể phát/tạm dừng phương tiện khi tôi cuộn lên và xuống. Tôi cần phải có được vị trí bộ chuyển đổi của chế độ xem hoàn toàn có thể nhìn thấy. Tôi đang làm một cái gì đó như thế này.layoutmanager.FindFirstCompletelyVisibleItemPosition luôn trả về -1
Trong đoạn hoạt động của tôi, tôi có điều này:
layoutmanager = new LinearLayoutManager(Activity);
adapter = new FeedAdapter(vid, userName, this.Context);
feeditem.SetLayoutManager(layoutmanager);
feeditem.SetAdapter(adapter);
var onScrollListener = new XamarinRecyclerViewOnScrollListener(Activity, layoutmanager, adapter);
Sự kiện cuộn người nghe trông như thế này:
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);
Vấn đề là các phương pháp quản lý LinearLayout FindFirstCompletelyVisibleItemPosition
luôn trả về -1 ngay cả khi xem là hoàn toàn có thể nhìn thấy. Các phương pháp khác như FindFirstVisibleItemPosition
và FindLastVisibleItemPosition
cho vị trí chính xác của chế độ xem.
Bất kỳ ý tưởng nào có thể là vấn đề ở đây?