2017-05-25 5 views
4

私はサーバーからデータを取得し、これをLithoフレームワークを使用してRecyclerViewに表示するRetrofit APiを実装しています。うまくいきます。 recyclerviewで表示するデータが無限にあるときはわかっているので、改ページパターンを実装する必要があります。私はこれを知っていますが、Lithoフレームワークでこれを実装する方法が混乱しています。私にはわからないLithoフレームワークでページ分割を実行する方法は?

final Component component = Recycler.create(context) 
    .binder(recyclerBinder) 
    .onScrollListener(new RecyclerView.OnScrollListener() { 
     @Override 
     public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
      super.onScrollStateChanged(recyclerView, newState); 
      // 
     } 

     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
      super.onScrolled(recyclerView, dx, dy); 
      // 
     }) 
    .build(); 

:リソonScrollListener()方法を提供し、どのようにリソで無限スクロールをカスタマイズEndlessRecyclerViewScrollListenerを使用するには?

答えて

1

OnScrollListeneronScrolledメソッド内のrecyclerBinderを利用した「無限の」スクロールパターンの実装が成功しました。あなたは `onScrolled(RecyclerView recyclerView、int型では、答えるため

public void callback(List<T> results) { 
    int position = recyclerBinder.getItemCount(); 
    for(T result: results) { 
     Component component = //assemble your component(s) ... 
     ComponentInfo.Builder info = ComponentInfo.create().component(component); 
     recyclerBinder.insertItemAt(position, info.build()); 
     position++; 
    } 
} 
+0

感謝を数える項目から始まるあなたの項目を挿入することができます - コールバックメソッドで次に

//Initialize the RecyclerBinder recyclerBinder = new RecyclerBinder(c, new LinearLayoutInfo(getContext(), OrientationHelper.VERTICAL, false)); //Initialize a recycler component Component component = Recycler.create(c) .onScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); // use the recyclerBinder to determine what items at what position are visible - // (you could also use the findLastVisibleItemPosition() method depending on your implementation) int firstVisibleItemPosition = recyclerBinder.findFirstVisibleItemPosition(); //check if it is within range relative to the current available items and is not loading (room to improve/modify logic pending use case) if((recyclerBinder.getItemCount() - 5) <= firstVisibleItemPosition && !isLoading) { //if so - use your service to get the next page service.getNextPage(); } } }) .build(); 

:簡単な例は次のようになりますdx、int dy) 'メソッド' service.getNextPage(); '私は理解しませんでした、' getNextPage() 'はカスタマイズされたメソッドですか? –

+0

@HussainKhan - はい - 次のデータページを呼び出す必要があります。おそらく、APIがフェッチするページ番号をインクリメントするレトロフィットサービスの呼び出しです。 – syllabix

+0

ありがとう、私の問題を解決、良い答え –

関連する問題