RecyclerView添加点击事件 长按删除
1.适配器中添加点击方法
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
if (TYPE_ONE==i){
View view=LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_list,null,false);
final ViewHolder viewHolder=new ViewHolder(view);
//添加点击事件
view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//获取view对应的位置
int position=viewHolder.getLayoutPosition();
if (longClickLisenter!=null){
//回调监听
longClickLisenter.onRecyclerViewItemLongClick(position);
}
return true;
}
});
return viewHolder;
创建接口
public interface OnRecyclerViewItemLongClickLisenter {
void onRecyclerViewItemLongClick(int position);
}
private OnRecyclerViewItemLongClickLisenter longClickLisenter;
public void setOnRecyclerViewItemLongClickLisenter(OnRecyclerViewItemLongClickLisenter longClickLisenter) {
this.longClickLisenter = longClickLisenter;
}
定义删除方法
public void removeItem(int position){
result.remove(position);
notifyDataSetChanged();
}
2.主页面为适配器设置点击事件调用适配器中删除方法
@Override
public void getViewData(String json) {
if (json!=null){
Gson gson=new Gson();
JsonBean jsonBean = gson.fromJson(json, JsonBean.class);
List<JsonBean.ResultBean.PzshBean.CommodityListBeanX> list = jsonBean.getResult().getPzsh().getCommodityList();
final MyAdapter adapter=new MyAdapter(getContext(),list);
recyclerView.setAdapter(adapter);
adapter.setOnRecyclerViewItemLongClickLisenter(new MyAdapter.OnRecyclerViewItemLongClickLisenter() {
@Override
public void onRecyclerViewItemLongClick(int position) {
Toast.makeText(getActivity(), "删除成功" + position", Toast.LENGTH_SHORT).show();
adapter.removeItem(position);
}
});
}
}