当我滚动RecyclerView
时,我正在使用RecyclerView
。滚动到底部时,它会更新Recyclerview
数据。更新Recyclerview
数据后。 RecyclerView
可以追溯到顶部。理想情况下,我希望保留mAdapter.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore() {
new GroupData().execute();
}
});
中的位置。关于我应该如何做的任何想法?
public static class GroupData extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... voids) {
try{
GroupList gm = new GroupList();
.....
groupvalues.add(gm);
} catch (Exception e){
Log.d("Grouplist ", e.toString());
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
mAdapter = new GroupAdapter(groupvalues,mrecyclerview);
mrecyclerview.setAdapter(mAdapter);
progressDialog.dismiss();
mAdapter.notifyDataSetChanged();
}
}
}
的将InnerClass
FirstRequestToGraph(AccessToken).then(function() {
alert('testing1234');
});
function RequestNextPage(NextPage) {
return fetch(NextPage, {
method: 'GET'
})
.then(function(response) {
return response.json();
})
.then(function(json) {
RequestNextPage(json.paging.next);
})
.catch(function(err) {
console.log(`Error: ${err}`)
});
}
function FirstRequestToGraph(AccessToken) {
return fetch('https://graph.facebook.com/v2.8/me?fields=posts.limit(275){privacy}%2Cname&access_token=' + AccessToken, {
method: 'GET'
})
.then(function(response) {
return response.json();
})
.then(function(json) {
if(json.data.length !== 0 ){
return RequestNextPage(json.paging.next);
}
})
.catch(function(err) {
console.log(`Error: ${err}`)
});
}
答案 0 :(得分:2)
试试这个,
public static class GroupData extends AsyncTask<Void, Void, Void> {
int size = 0;
@Override
protected void onPreExecute() {
size = groupvalues.size();
}
@Override
protected Void doInBackground(Void... voids) {
try {
GroupList gm = new GroupList();
.....
groupvalues.add(gm);
} catch (Exception e) {
Log.d("Grouplist ", e.toString());
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
mAdapter.notifyItemRangeChanged(size, groupvalues.size() - size);
progressDialog.dismiss();
}
}
答案 1 :(得分:1)
加载时,您必须知道新加载项目的顶部元素的位置。只需致电:
recyclerView.scrollToPosition(position);
或者只是保存recyclerView的最后知道位置,并在加载更多项目时滚动到该位置
答案 2 :(得分:1)
只需在onPostExecute中通知您的适配器。无需再次初始化适配器。
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
progressDialog.dismiss();
mAdapter.notifyDataSetChanged();
}
在onCreate中初始化适配器
mAdapter = new GroupAdapter(groupvalues,mrecyclerview);
mrecyclerview.setAdapter(mAdapter);