我正在尝试使用recycleler实现无限滚动,但是当我调用notifyDataSetChanged()时,整个列表刷新然后滚动位置返回到顶部。所以我经历了许多提到的文档。我从顶部滚动像在任何聊天应用程序中一样。
所以我检查layoutManager.findFirstVisibleItemPosition()== 0,然后我下载更多项目。 每次只下载30个iems。我不希望我的列表移到顶部,它应该保持原样。
我尝试使用notifyItemRangeInserted(位置,大小),这给了一些我不想要的动画。我希望滚动顺畅而且无忧无虑。这也不保持位置。如何实现相同
答案 0 :(得分:0)
试试这个,为我工作。 您可以将位置保存在变量中。
答案 1 :(得分:0)
我之前已经实现了类似的功能。 愿它可以帮到你,随时问。
productAdapter = new ProductAdapter(this, products, productsListView);
productsListView.setAdapter(productAdapter);
productAdapter.setOnLoadMoreListener(new OnLoadMoreListner() {
@Override
public void onLoadMore() {
products.add(null); // here products is an array list of produt
productAdapter.notifyItemInserted(products.size() - 1);
handler.postDelayed(new Runnable() {
@Override
public void run() {
// remove progress item
products.remove(products.size() - 1);
productAdapter.notifyItemRemoved(products.size());
//add items one by one
long lastItemId = products.get(products.size() - 1).getId();
ArrayList<Product> newProductList = new ArrayList<>(); //download or fetch new data (Some more Products) and assign it newProductList
products.addAll(products.size(), newProductList.getProducts());
productAdapter.notifyDataSetChanged();
productAdapter.setLoaded();
}
}, 2000);
}
});
}