试图找出更新RecyclerView适配器的问题.
在我获得新的产品列表后,我尝试:
更新创建ArrayList的片段recyclerView,将新数据设置为适配器,然后调用adapter.notifyDataSetChanged(); 那没起效.
像其他人一样创建一个新的适配器,它适用于他们,但对我没有任何改变: recyclerView.setAdapter(new RecyclerViewAdapter(newArrayList))
创建一个Adapter更新数据的方法,如下所示:
public void updateData(ArrayList<ViewModel> viewModels) {
items.clear();
items.addAll(viewModels);
notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)
然后每当我想更新数据列表时,我都会调用此方法; 那没起效.
要检查我是否可以以任何方式修改recyclerView,并且我尝试删除至少一个项目:
public void removeItem(int position) {
items.remove(position);
notifyItemRemoved(position);
}
Run Code Online (Sandbox Code Playgroud)
一切都保持原样.
这是我的适配器:
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> implements View.OnClickListener {
private ArrayList<ViewModel> items;
private OnItemClickListener onItemClickListener;
public RecyclerViewAdapter(ArrayList<ViewModel> items) {
this.items = items;
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View …Run Code Online (Sandbox Code Playgroud) 我试图重构我的一个活动类来实现mvp(使用mvp mosby库).我有一个RecyclerView,在这个视图中有一些项目在运行时会对它们进行一些更改.例如,我做了一些I/O操作并改变了一行.
我认为将我的项目保留在演示者课程中会更好; 这是什么最好的做法?将此保留在1)演示者或2)活动中或3)仅保留适配器中的视图相关项和演示者中的所有其他项.
活动现在直接保留项目并更改活动中的项目行,然后通知适配器.是不是更好地在适配器中移动所有这一行并通知适配器类中的适配器?例如,我想要一些row.where的更改图标,哪个类负责?适配器?活动?现在我想在适配器中实现它:
changeItemIcon(int position, int iconRes){
mImages.get(position).setICon(iconRes);
notifyItemChanged(position);
}
Run Code Online (Sandbox Code Playgroud)
我在活动上调用此方法并从演示者调用活动方法.
好吗?这样做的最佳做法是什么?
UPDATE
我也发现这个问题(使用RecyclerView适配器更新数据的最佳方法),使用适配器方法更改项目.但修改呢?我需要继续参考我活动中的项目吗?