0

スクロール後にさらにデータを読み込むためにRecyclerViewのcustomAdapterを作成しています。だから私はAddScrollListnerRecycleViewにしなければならない。しかし私の公的コンストラクターではそれは見つかりませんでした。LinearLayoutManagerはAndroid(Xamarin)のRecycleViewでは動作しません

の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; 
        } 
       } 
      }); 
     } 

しかし、とき、私はXamarinに動作していないLinearLayoutManagerを翻訳します。

Xamarinコード:私のRecycleViewが見つからない、上のコードで

LinearLayoutManager linearLayoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager(); 

アップデート:私はこのよう

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に変換されます。

ので、コードは次のようになります。同様に通常あなたがあなたの活動やフラグメントでの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

関連する問題