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



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

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 method:

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

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

category.clear();

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

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