EasyRecyclerView
EasyRecyclerView copied to clipboard
item中有删除事件,删除成功后如何刷新List
集成了BaseViewHolder setData里有setOnClickListener 设置了删除这一条数据 请问如何刷新 尝试了如下操作都不行
// mList.remove(getAdapterPosition());
// getOwnerAdapter().notifyItemRemoved(getLayoutPosition());
// getOwnerAdapter().notifyItemRangeChanged(getLayoutPosition(),mList.size());
或者说activity里实现item里的监听 用adapter方法刷新也可以 请指教
使用adapter里面的OnBindViewHolder设置响应事件是可以的,但是貌似OnBindViewHolder和BaseViewHolder 的setData有冲突,设置了OnBindViewHolder之后setData不触发了。我的解决办法就是把setdata里面的内容全部搬到OnBindViewHolder里面
找到原因了。。。 public void OnBindViewHolder(BaseViewHolder holder, final int position) { holder.setData(getItem(position)); } 所以要先调用super.OnBindViewHolder(holder, position) 再写你自己的内容
删除写在自己定义的adapter里面,然后通过接口回调给Activity最后再remove
public class DeleteItemAdapter extends RecyclerArrayAdapter<String> {
private AddOrRemove onClick;
public interface AddOrRemove{
void addItem(int position);
void removeItem(int position);
}
public void setClick(AddOrRemove onClick){
this.onClick = onClick;
}
public DeleteItemAdapter(Context context) {
super(context);
}
@Override
public BaseViewHolder OnCreateViewHolder(final ViewGroup parent, int viewType) {
final DeleteItemHolder deleteItemHolder = new DeleteItemHolder(parent);
deleteItemHolder.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClick.addItem(deleteItemHolder.getAdapterPosition()-headers.size());
}
});
deleteItemHolder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClick.removeItem(deleteItemHolder.getAdapterPosition()-headers.size());
}
});
return deleteItemHolder;
}
}