最佳答案
我正在创建一个卡的列表,以显示使用回收视图,其中每卡有一个按钮,以删除该卡从名单。
当我使用 ()删除回收视图中的卡,它删除项目和动画罚款,但列表中的数据没有正确更新。
如果不是这样,我切换到 NotifyDataSetChanged (),然后在清单中的项目被删除和更新正确,但是卡片不动画。
是否有人有使用 notifyItemRemoved ()的经验,并且知道为什么它的行为与 notifyDataSetChanged 不同?
下面是我正在使用的一段代码:
private List<DetectedIssue> issues = new ArrayList<DetectedIssue>();
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
// - get element from your dataset at this position
// - replace the contents of the view with that element
if(position >0){
RiskViewHolder riskHolder = (RiskViewHolder)holder;
final int index = position - 1;
final DetectedIssue anIssue = issues.get(index);
riskHolder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
int index = issues.indexOf(anIssue);
issues.remove(anIssue);
notifyItemRemoved(index);
//notifyDataSetChanged();
} catch (SQLException e) {
e.printStackTrace();
}
}
});
}
}
@Override
public int getItemCount() {
return (issues.size()+1);
}