我已经实现了我的RecyclerView,甚至添加了一个onscrolllistener来支持无限滚动,现在我遇到了一个希望很容易的问题:如何将新加载的数据添加到现有数据集中?
我目前的方法:我创建一个新数组,其中包含现有数据集的长度+新加载数据的长度。我System.arraycopy
我现有的数据集,并使用for循环添加新内容。
这有效,但列表总是被重置(滚动回到顶部),我认为我添加其他内容的方式过于复杂/错误,尽管我看过的教程似乎已经过了这个“细节”。 / p>
更新:我在加载数据后正在UI-Thead上调用“scrollToPosition”,但我怀疑这是正确的做法还是错了?
答案 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;}"