RecyclerView在向List添加新项目时移至顶部

时间:2016-11-14 08:28:48

标签: android android-recyclerview

我正在尝试使用recycleler实现无限滚动,但是当我调用notifyDataSetChanged()时,整个列表刷新然后滚动位置返回到顶部。所以我经历了许多提到的文档。我从顶部滚动像在任何聊天应用程序中一样。

所以我检查layoutManager.findFirstVisibleItemPosition()== 0,然后我下载更多项目。 每次只下载30个iems。我不希望我的列表移到顶部,它应该保持原样。

我尝试使用notifyItemRangeInserted(位置,大小),这给了一些我不想要的动画。我希望滚动顺畅而且无忧无虑。这也不保持位置。如何实现相同

2 个答案:

答案 0 :(得分:0)

试试这个,为我工作。 您可以将位置保存在变量中。

scrollToPositionWithOffset

答案 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);

            }
        });
    }