Android RecyclerView无限滚动:如何向数据集添加更多项目

时间:2015-05-13 15:51:58

标签: android infinite-scroll android-recyclerview

我已经实现了我的RecyclerView,甚至添加了一个onscrolllistener来支持无限滚动,现在我遇到了一个希望很容易的问题:如何将新加载的数据添加到现有数据集中?

我目前的方法:我创建一个新数组,其中包含现有数据集的长度+新加载数据的长度。我System.arraycopy我现有的数据集,并使用for循环添加新内容。

这有效,但列表总是被重置(滚动回到顶部),我认为我添加其他内容的方式过于复杂/错误,尽管我看过的教程似乎已经过了这个“细节”。 / p>

更新:我在加载数据后正在UI-Thead上调用“scrollToPosition”,但我怀疑这是正确的做法还是错了?

2 个答案:

答案 0 :(得分:1)

您不应该在数据集中添加内容,迟早会耗尽内存。您可以做的是在适配器内的Short.MAX_VALUE中返回一个大数字(我使用getItemCount)项,并且在请求查看位置的方法中,您应该执行position % list.size();

这种方式不是真正无穷无尽的RecyclerView,但足够好。我明天会粘贴一些代码,我现在不在这里:/

答案 1 :(得分:0)

我认为您必须在适配器中添加项目。我们说吧

class MainActivity extends AppCompactActivity{
     Adapter adapter = new Adapter();
     List<YourCustomObjects> objects;
     public void onCreateView(){
     //////// Something yours
     }

     public void onLoadMore(){

     /////  Your operation to retrieve data and init it to your list objects
     for(YourCustomObject object : objects){
         adapter.addItem(object);
     } 

     }
}

您的片段或活动的实现,您从互联网上检索数据。请说

data-bind="click: function(){setTimeout(removeChildNode(),20);return true;}"