I know this is a late answer, but it may be useful to others. You don't need to add new delete method in your adapter class. The best way to do this is first add interfacein your class ViewHolder.
public class ApapterVH extends RecyclerView.ViewHolder implements View.OnClickListener{
ImageView ivDeleteItem;
ApapterVH(View itemView) {
super(itemView);
ivDeleteItem = itemView.findViewById(R.id.ivDelete);
itemView.setOnClickListener(this);
ivDeleteFoodItem.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId() == ivDeleteItem.getId()){
onItemClickListener.onDelete(v, getAdapterPosition());
}
if(onItemClickListener!=null){
onItemClickListener.onItemClick(v, getAdapterPosition());
}
}
}
public interface OnItemClickListener {
void onItemClick(View view , int position);
void onDelete(View view, int position);
}
public void SetOnItemClickListener(final OnItemClickListener onItemClickListener){
this.onItemClickListener = onItemClickListener;
}
Then in your activity or snippet add the following:
mAdapter.SetOnItemClickListener(new YourAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
}
@Override
public void onDelete(View view, int position) {
mList.remove(position);
mAdapter.notifyItemRemoved(position);
}
});
Only this two-line code will remove your element:
mList.remove(position);
mAdapter.notifyItemRemoved(position);
source
share