Android プロジェクトに、各ビュー内にメディア コンテンツを表示する recyclerview があります。私が達成しようとしているのは、上下にスクロールしながらメディアを再生/一時停止できることです。完全に見えるビューのアダプター位置を取得する必要があります。私はこのようなことをしています。
私のアクティビティフラグメントには、次のものがあります。
layoutmanager = new LinearLayoutManager(Activity);
adapter = new FeedAdapter(vid, userName, this.Context);
feeditem.SetLayoutManager(layoutmanager);
feeditem.SetAdapter(adapter);
var onScrollListener = new XamarinRecyclerViewOnScrollListener(Activity, layoutmanager, adapter);
スクロール リスナー イベントは次のようになります。
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);
FindFirstCompletelyVisibleItemPosition
問題は、ビューが完全に表示されている場合でも、linearlayout マネージャー メソッドが常に -1 を返すことです。FindFirstVisibleItemPosition
やのような他のメソッドFindLastVisibleItemPosition
は、ビューの正しい位置を示します。
ここで何が問題なのですか?