我在添加一些数据后尝试更新我的适配器,但它没有更新,当我切换其他 Activity 并返回时,这次我的代码更新了适配器:
void updateAdapter(){
adapter.setData(getData());
adapter.notifyDataSetChanged();
Log.d("TAG"," DATA SIZE AFTER UPDATE : "+getData().size() +" items : "+adapter.getItemCount());
}
我的适配器:
private void createAdapter(final RecyclerView recyclerView , final List<Information> data) {
List<Information> content = new ArrayList<>();
Log.d("TAG","createAdapter Called");
final int[] currentRowPosition = {0};
content = data;
final List<Information> finalContent = content;
adapter = new ParallaxRecyclerAdapter<Information>(finalContent) {
/// my onBindViewHolder
@Override
public void onBindViewHolderImpl(final RecyclerView.ViewHolder viewHolder, final ParallaxRecyclerAdapter<Information> adapter, final int i) {
currentRowPosition[0] = i;
if ( i <= finalContent.size() -1 ){
((ViewHolder) viewHolder).linearLayout.setVisibility(View.GONE);
final Information current = finalContent.get(i);
((ViewHolder) viewHolder).DESCRIPTION.setText(current.description);
}else {
// this is my loadMore button which stays at the last row of recyclerView
((ViewHolder) viewHolder).setIsRecyclable(false);
((ViewHolder) viewHolder).linearLayout.setVisibility(View.VISIBLE);
((ViewHolder) viewHolder).itemView.getLayoutParams().height = 100;
((ViewHolder) viewHolder).LOADMORE.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fetchNext();
}
});
}
}
//my on create View Holder
@Override
public RecyclerView.ViewHolder onCreateViewHolderImpl(ViewGroup viewGroup, final ParallaxRecyclerAdapter<Information> adapter, int i) {
return new ViewHolder(getActivity().getLayoutInflater().inflate(R.layout.custom_row, viewGroup, false));
}
@Override
public int getItemCountImpl(ParallaxRecyclerAdapter<Information> adapter) {
return finalContent.size()+1;
}
});
// adding header to recyclerView
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
View header = getActivity().getLayoutInflater().inflate(R.layout.header, recyclerView, false);
headerImageView = (ImageView) header.findViewById(R.id.headerImageView);
//setting CoverImage
adapter.setParallaxHeader(header, recyclerView);
adapter.setData(content);
recyclerView.setAdapter(adapter);
}
知道如何在我的 RecyclerView 上添加实时更新的新项目吗??任何指导都会对我很有帮助
最佳答案
我假设当您第一次运行 Activity
(它有 RecyclerView
)时,它会正确地从 adapter
加载所有内容。
但是,当您更改为其他 activity
时,这会将项目更改为您的 adapter
并返回到具有 RecyclerView 的
因为 Activity
adapter
没有更新,它无法获得正确的更新信息。
这可能是因为当您的 Activity 在 onResume() 中恢复时您没有刷新适配器,像这样的东西。您可能需要根据需要对 onResume 方法进行其他更改,
onResume(){
if(adapter != null){
adapter.notifyDataSetChanged();
}
}
请检查Activity
的生命周期
例子:
这不会直接解决您的问题,但可以帮助您了解当您返回 activity
时您应该刷新 adapter
。
有一个NoteListActivity ,其中包含 ListView,您可以在 NoteEditActivity 中向其中的 Adapter 添加或编辑项目一旦你回来,你必须在你有你的 listview
activity
中刷新 adapter
关于java - 在不滚动到顶部的情况下更新 recyclerView 适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38262560/