У меня есть RecyclerView с функцией смахивания, чтобы показать кнопку удаления и редактирования.
Я добавил: adapter.notifyItemRemoved(position)
и это: adapter.notifyItemRangeChanged(0, adapter.getItemCount());
при нажатии на показанную кнопку удаления, анимация для удаления элемента работает, и элемент удаляется из моей базы данных
НО, затем удаленный элемент вновь появляется в моем обзоре переработчика. Когда я изменяю действие и go назад, на действие с просмотром реселлера, список, который я должен видеть, хорош.
Если я удаляю код «notifyItemRangeChanged», список обновляется с последним повторенным элементом .
Я думаю, что getItemCount моего адаптера не обновляется должным образом. так что я попытался по-другому вызвать вначале мой метод, который генерирует список. Это сработало, НО моя анимация удаления элементов исчезла, потому что я думаю, что она просто пропускает повторное создание списка ....
Есть идеи?
Спасибо заранее за ваш отзыв !
****************** ОБНОВЛЕНИЕ - ДОБАВЛЕНИЕ КОДА КЛАССА АДАПТЕРА **************** publi c класс RVCategoryAdapter расширяет RecyclerView.Adapter {Контекстный контекст; Список категорийItemList;
public RVCategoryAdapter(Context context, List<CategoryItem> categoryItemList) {
this.context = context;
this.categoryItemList = categoryItemList;
}
@NonNull
@Override
public CategoryViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(context).inflate(R.layout.category_item_layout, parent, false);
return new CategoryViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull CategoryViewHolder holder, final int position) {
final int categoryID;
final String categoryTitle;
Glide.with(context).load(categoryItemList.get(position).getImage()).into(holder.ivCategoryIcon);
holder.txtCatID.setText(""+categoryItemList.get(position).getCategoryID());
holder.txtCategoryTitle.setText(categoryItemList.get(position).getTitle());
holder.txtCategoryDesc.setText(categoryItemList.get(position).getDescription());
categoryID = Integer.parseInt(holder.txtCatID.getText().toString());
categoryTitle = holder.txtCategoryTitle.getText().toString();
holder.cardViewItemLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, NotesListActivity.class);
intent.putExtra("CategoryID", categoryID);
intent.putExtra("CategoryTitle", categoryTitle);
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return categoryItemList.size();
}
}