0

我为我的RecyclerView创建了自定义适配器,用于在滚动之后加载更多数据。所以我必须AddScrollListnerRecycleView。但在我的公共构造函数中没有找到。LinearLayoutManager在Android中的RecycleView中不起作用(Xamarin)

的Android代码:

public UserAdapter() { 
      final LinearLayoutManager linearLayoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager(); 
      mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 
       @Override 
       public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
        super.onScrolled(recyclerView, dx, dy); 

        totalItemCount = linearLayoutManager.getItemCount(); 
        lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition(); 

        if (!isLoading && totalItemCount <= (lastVisibleItem + visibleThreshold)) { 
         if (mOnLoadMoreListener != null) { 
          mOnLoadMoreListener.onLoadMore(); 
         } 
         isLoading = true; 
        } 
       } 
      }); 
     } 

但是当我翻译LinearLayoutManager不Xamarin工作。

Xamarin代码:

LinearLayoutManager linearLayoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager(); 
在上面的代码

RecycleView没有找到。

更新:

我已经设置这样

mRecyclerView. = FindViewById<RecyclerView>(Resource.Id.inventory_recycleView); 
var manager = new LinearLayoutManager(this); 
mRecyclerView. SetLayoutManager(manager); 
mInventoryAdapter = new InventoryAdapter(); 
this.mRecyclerView.SetAdapter(mInventoryAdapter); 

但后来也是我适配器类,不能使用。

class InventoryAdapter : RecyclerView.Adapter 
     { 

      private const int VIEW_TYPE_ITEM = 0; 
      private const int VIEW_TYPE_LOADING = 1; 

      private OnLoadMoreListener mOnLoadMoreListener; 

      private bool isLoading; 
      private int visibleThresold = 5; 
      private int lastVisibleItem, totalItemCount; 

      public override int ItemCount 
      { 
       get 
       { 
        throw new NotImplementedException(); 
       } 
      } 

      public InventoryAdapter() 
      { 
       var layoutmanger = (LinearLayoutManager) mRecyclerView..GetLayoutManager(); 

      } 
} 

任何帮助被赞赏。

+0

LinearLayoutManager linearLayoutMgr =新LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(linearLayoutMgr);试试这个 – Ritesh

回答

0

getLayoutManger(),因为它是一个没有参数的方法,在RecyclerView上转换成属性LayoutManager

因此,代码会看起来像:

var layoutManager = (LinearLayoutManager)mRecyclerView.LayoutManager; 

一般你会设置的布局管理您的活动或片段,如:

var manager = new LinearLayoutManager(Activity); // or just this if inside Activity 
mRecyclerview.SetLayoutManager(manager); 

目前还不清楚你在RecyclerView如何传递给适配器。看起来好像mRecyclerView是某个领域。通常我会在把它作为一个agument在构造函数中,如果我需要在这个类:

public MyAdapter(RecyclerView recycler) 
{ 
    mRecyclerView = recycler; 
    // do more stuff here... 
} 
+0

看到我的更新问题。 – Ironman

相关问题