2017-07-09 1 views
1

RecyclerViewのSQLiteデータベースからロードサイクルごとに25レコードのデータをロードしています。私はRecyclerViewスクロールリスナーでデータロードメソッドを呼び出すロジックに問題はあるものの、すべてのことを把握しています。
リストはエミュレータのrecyclerViewのスクロールにきちんと読み込まれていますが、物理デバイスでテストしたとき、Lenovo Phab 2上でうまくいきましたが、Miノート3ではリストが一貫してロードされませんスクロールの底に達する記録。以下は無限のRecyclerViewデータロードロジックがすべてのデバイスで一貫していません

私はLayoutManagersのすべてのタイプで動作classを、書かれているRecyclerViewのscrolleリスナー

private val RecyclerView_ScrollListener = object : RecyclerView.OnScrollListener(){ 
    override fun onScrolled(recyclerView1: RecyclerView?, dx: Int, dy: Int) { 
     super.onScrolled(recyclerView1, dx, dy) 

     if (dy > 0) { 
      if (limit < rowCount_fromDatabase) { 
       visibleItemCount = layoutManager_MemberList.childCount 
       totalItemCount = layoutManager_MemberList.itemCount 
       firstVisibleItemPosition = layoutManager_MemberList.findFirstVisibleItemPosition() 

       if (visibleItemCount + firstVisibleItemPosition >= totalItemCount) { 
        limit += 25 
        load_Data() 
       } 
      } 
     } 
} 

答えて

1

私は同じ問題を抱えていました。試してみてください

if (limit < returnedRowCount_fromDatabase) { 
    if((dy > 0) && (linearLayoutManager.findLastCompletelyVisibleItemPosition() == rowList.size() - 1)){ 
     limit += 25; 
     load_Data(); 
     } 
} 
0

で使用しているコードです。エミュレータと実際のデバイスでテストされました。

次のページのダブルロードを防止するブロッカーがあります。 Listener.onListEndReached()がtrueを返すと、RecyclerViewOnScrollUpdater.loadingがfalseに設定されるまで、再び呼び出されません。

visibleThresholdを設定し、enabledでページ読み込みを有効または無効にすることもできます。

0

何私はより多くをスクロールするために使用することです:

 mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 
     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
      super.onScrolled(recyclerView, dx, dy); 
      if (!recyclerView.canScrollVertically(1)){ 
      //Load more data here. It will only trigger when you reach the end of your list and cannot scroll further 
      } 
     } 
    }); 

は、この情報がお役に立てば幸いです。

関連する問題