android - 删除项目时刷新 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 不刷新。你能帮助我吗?我在这里尝试了很多方法,但我无法解决我的问题。
解决方案
您必须在删除项目刷新适配器之后
@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();
}
推荐阅读
- javascript - 保护将 JSON 数据传递到 Nodejs 中的前端
- image - Docker Bind Mount 读取初始容器数据
- .htaccess - htacces 没有重定向
- c - 在C中的矩阵中查找相同的列
- javascript - If 语句不显示结果
- android - 从 androids 上传的图像仅在 android 设备上侧向显示
- php - 在 WooCommerce 中管理从总量原材料中定制产品的库存?
- web-services - 设计一个依赖 SOAP API 的服务,它改变了很多
- caching - 使用 redis 缓存作为主存储然后再同步到数据库的缺点?
- c++ - 执行:使用 [dbName] ;exec sp_space 与 ADO C++ 一起使用