android Recyclerview удаление элемента не обновляет счетчик получения элемента адаптера - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть 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();
    }
}

1 Ответ

0 голосов
/ 03 апреля 2020

При нажатии на кнопку удаления пальцем слушатель также удалит ваш элемент из списка. Я бы предложил вам добавить функцию удаления в вашем адаптере. Затем в этом методе удалите ваш элемент из списка и вызовите notifyItemRemoved.

public void delete(int position){
    categoryItemList.remove(position);
    notifyItemRemoved(position);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...