Я создаю список карт для отображения с помощью RecyclerView, где каждая карта имеет кнопку для удаления этой карты из списка.using notifyItemRemoved или notifyDataSetChanged с RecyclerView в Android
Когда я использую notifyItemRemoved(), чтобы удалить карту в RecyclerView, она удаляет элемент и анимирует изображение, но данные в списке не обновляются правильно.
Если вместо этого, я переключаюсь на notifyDataSetChanged(), тогда элементы в списке удаляются и обновляются правильно, но тогда карты не ожидают.
У кого-то есть опыт использования функции notifyItemRemoved() и знаете, почему он ведет себя иначе, чем notifyDataSetChanged?
Вот некоторые peiece кода, который я использую:
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);
}
попробовать notifyItemRemoved (индекс + 1) – pskink
Вероятно потому, что вы удаление разных индексов –
Указатель верен. Как я сказал, все работает нормально, если я использую notifyDataSetChanged() вместо этого ..... – revolutionary