繁体   English   中英

使用 RecyclerView 在保持滚动位置的同时刷新数据

[英]Refresh data while keeping scroll position with RecyclerView

刷新 RecyclerView 中的数据时,如何保持滚动位置? 我的代码中的问题是我获取的数据来自 API,现在当我刷新数据时,我使用clear()方法删除当前数据,并使用getData ()方法检索新数据。

获取数据方法:

        private void getData() {
        JsonArrayRequest arrayRequest = new JsonArrayRequest(url_get, response -> {
            JSONObject jsonObject;
            for (int i = 0; i < response.length(); i++) {
                try {
                    jsonObject = response.getJSONObject(i);
                    Category cat = new Category();
                    cat.setId(jsonObject.getString("id"));
                    cat.setCategory(jsonObject.getString("name"));
                    cat.setPvisited(jsonObject.getString("person_visited"));
                    cat.setCompany(jsonObject.getString("company"));
                    cat.setDate(jsonObject.getString("date"));
                    category.add(cat);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
            adapterPush(category);
            refresh.setRefreshing(false);
        }, error -> {

        });

        RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
        requestQueue.add(arrayRequest);
    }

分类详情:

        private final ArrayList<Category> category = new ArrayList<>();

onRefresh 方法:

        @Override
    public void onRefresh() {
        category.clear();
        getData();
    }

我认为 getdata() 方法有问题,当我删除

category.clear();

在我的代码中,数据被添加到字符串中,但位置仍然返回到开头。 或者也许我应该使用其他东西,比如刷新方法而不是clear()

category.clear();
recyclerview.notifyDataSetChanged();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM