首页 > 解决方案 > 删除项目时刷新 RecyclerView

问题描述

    @Override
    public void onBindViewHolder(final BookViewHolder holder, final int position) {
        final Upload uploadCurrent = mUploads.get(position);
        holder.iBookName.setText(uploadCurrent.getBookName());
        holder.iBookAuthor.setText(uploadCurrent.getBookAuthor());
        holder.iBookPublisher.setText(uploadCurrent.getBookPublisher());
        /*holder.iBookDesc.setText(uploadCurrent.getBookDesc());*/
        Picasso.with(mContext)
                .load(uploadCurrent.getBookImage())
                .placeholder(R.drawable.blank)
                .fit()
                .into(holder.iBookImage);
        holder.iBookMenu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                PopupMenu popup = new PopupMenu(mContext, holder.iBookMenu);
                popup.inflate(R.menu.cardview_menu);
                popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem item) {
                        switch (item.getItemId()) {
                            case R.id.add_my_list:
                                break;
                            case R.id.delete_my_list:
                                deleteBook(mUploads.get(position).getBookId());
                                break;
                        }
                        return false;
                    }
                });
                popup.show();
            }
        });
    }

    private void deleteBook(String id) {
        DatabaseReference dR = FirebaseDatabase.getInstance().getReference("Books").child(id);
        dR.removeValue();
        Toast.makeText(mContext, "Book deleted", Toast.LENGTH_SHORT).show();
    }

    @Override
    public int getItemCount() {
        return mUploads.size();
    }
}

我创建了一个图书应用程序。我在弹出菜单中设计了卡片视图,您可以删除项目。我可以删除项目,但它仍然看起来。我的问题是删除项目时recyclerview 不刷新。你能帮助我吗?我在这里尝试了很多方法,但我无法解决我的问题。

标签: android

解决方案


您必须在删除项目刷新适配器之后

 @Override
    public void onBindViewHolder(final BookViewHolder holder, final int position) {
        final Upload uploadCurrent = mUploads.get(position);
        holder.iBookName.setText(uploadCurrent.getBookName());
        holder.iBookAuthor.setText(uploadCurrent.getBookAuthor());
        holder.iBookPublisher.setText(uploadCurrent.getBookPublisher());
        /*holder.iBookDesc.setText(uploadCurrent.getBookDesc());*/
        Picasso.with(mContext)
                .load(uploadCurrent.getBookImage())
                .placeholder(R.drawable.blank)
                .fit()
                .into(holder.iBookImage);
        holder.iBookMenu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                PopupMenu popup = new PopupMenu(mContext, holder.iBookMenu);
                popup.inflate(R.menu.cardview_menu);
                popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem item) {
                        switch (item.getItemId()) {
                            case R.id.add_my_list:
                                break;
                            case R.id.delete_my_list:
                                deleteBook(mUploads.get(position).getBookId(),position);
                                break;
                        }
                        return false;
                    }
                });
                popup.show();
            }
        });
    }

private void deleteBook(String id,int position) {
        DatabaseReference dR = FirebaseDatabase.getInstance().getReference("Books").child(id);
        dR.removeValue();
        // position of item delete in your adapter model
        notifyItemRemoved(position);
        Toast.makeText(mContext, "Book deleted", Toast.LENGTH_SHORT).show();
    }

推荐阅读