2016-05-21 26 views
6

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ư FindFirstVisibleItemPositionFindLastVisibleItemPosition cho vị trí chính xác của chế độ xem.

Bất kỳ ý tưởng nào có thể là vấn đề ở đây?

Trả lời

2

layoutManager.findFirstCompletelyVisibleItemPosition()

TỪ DOCUMENT

Trả về vị trí bộ chuyển đổi của FIRST HOÀN TOÀN VISIBLE xem . Vị trí này không bao gồm các thay đổi bộ điều hợp đã được gửi đi sau lần vượt qua bố cục cuối cùng.

Nó có nghĩa là, ít nhất một quan điểm listitem nên hoàn toàn có thể nhìn thấy nếu không, nó cung cấp cho -1 (NO_POSITION)

TỪ KIỂM TRA

này sẽ làm việc và đưa ra đúng vị trí ...

Fully Visible ListItem View

Điều này sẽ không hoạt động và cho -1 (NO_POSITION), vì hai chế độ xem ListItem không hiển thị đầy đủ.

enter image description here