【发布时间】:2016-12-05 09:54:29
【问题描述】:
实际上,这是我第一次使用 RecyclerView,我尝试从列表视图中删除项目,因为用户单击 menuItem 中的删除按钮...。 但是在点击删除选项后,我的项目是删除我的数据库但我的适配器没有更新...... 帮助我如何设置我的适配器
我的代码:
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
public static final String DELETE_URL = "http://delete.php";
String KEY_UNIQUE_ID="id";
Context context;
List<GetDataAdapter> getDataAdapter;
ImageLoader imageLoader1;
public RecyclerViewAdapter(List<GetDataAdapter> getDataAdapter, Context context){
super();
this.getDataAdapter = getDataAdapter;
this.context = context;
}
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_items, parent, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(final ViewHolder Viewholder, final int position) {
final GetDataAdapter getDataAdapter1 = getDataAdapter.get(position);
imageLoader1 = ServerImageParseAdapter.getInstance(context).getImageLoader();
imageLoader1.get(getDataAdapter1.getImageServerUrl(),
ImageLoader.getImageListener(
Viewholder.CircularNetworkImageView,//Server Image
R.drawable.loading,//Before loading server image the default showing image.
R.drawable.loading //Error image if requested image dose not found on server.
)
);
Viewholder.CircularNetworkImageView.setImageUrl(getDataAdapter1.getImageServerUrl(), imageLoader1);
Viewholder.ImageTitleNameView.setText(getDataAdapter1.getImageTitleName());
Viewholder.UserAge.setText(getDataAdapter1.getImageAge());
Viewholder.User_Gender.setText(getDataAdapter1.getImageGender());
Viewholder.overflow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showPopupMenu(Viewholder.overflow,getDataAdapter1.getId());
}
});
}
/**
* Showing popup menu when tapping on 3 dots
*/
private void showPopupMenu(View view, String position) {
// inflate menu
PopupMenu popup = new PopupMenu(context, view);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.menu_album, popup.getMenu());
popup.setOnMenuItemClickListener(new MyMenuItemClickListener(position));
// Toast.makeText(context, position, Toast.LENGTH_SHORT).show();
popup.show();
}
/**
* Click listener for popup menu items
*/
class MyMenuItemClickListener implements PopupMenu.OnMenuItemClickListener {
private String position;
public MyMenuItemClickListener(String position) {
this.position=position;
}
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.Delete:
Toast.makeText(context, "Delete option"+position, Toast.LENGTH_SHORT).show();
delete(position);
return true;
case R.id.Edit_Option:
Toast.makeText(context, "Edit option", Toast.LENGTH_SHORT).show();
return true;
default:
}
return false;
}
}
private void delete(String id){
//http call for Delete the item and it's successfully work but my list is not updated
}
@Override
public int getItemCount() {
return getDataAdapter.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
public TextView ImageTitleNameView,UserAge,User_Gender;
public ImageView overflow;
public Parse.CircularNetworkImageView CircularNetworkImageView ;
public ViewHolder(View itemView) {
super(itemView);
ImageTitleNameView = (TextView) itemView.findViewById(R.id.textView_item);
UserAge=(TextView) itemView.findViewById(R.id.age);
User_Gender =(TextView) itemView.findViewById(R.id.gender);
overflow = (ImageView) itemView.findViewById(R.id.overflow);
CircularNetworkImageView = (CircularNetworkImageView) itemView.findViewById(R.id.VollyNetworkImageView1);
}
}
【问题讨论】:
-
删除项目后,从模型中删除该项目并添加 adapter.notifyItemRemoved(position);
-
因为你的删除方法是空的...
-
@Selvin 实际上先生,我删除了删除方法代码,但它工作正常
-
@Divyesh 先生,我在调用删除方法后添加 getDataAdapter.notifyItemRemoved(position)
-
notifyItemRemoved 没有删除......你需要自己删除它......正如他在评论中所写的那样
标签: android listview android-recyclerview android-adapter