我在实现搜索功能的地方使用了recycleview。并且每个项目都添加了onClick,可通过以下代码从列表中删除项目。
holder.del_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int newPosition = holder.getAdapterPosition();
contactListFiltered.remove(newPosition);
notifyItemRemoved(newPosition);
notifyItemRangeChanged(newPosition, contactListFiltered.size());
});
它与普通列表配合使用很好,但是当搜索任何项目时,在筛选结果上,onclick侦听器可能会由于视图重叠而随机删除。 因此,我将onclick侦听器传递给具有以下代码的活动
mSolved.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// send selected contact in callback
listener.onSolved(contactListFiltered.get(getAdapterPosition()));
}
});
public interface FRoomAdapterListener {
void onSolved(Districtpost contact);
}
我正在使用的活动
public void onDelete(Districtpost contact) {
int newPosition = holder.getAdapterPosition();
contactListFiltered.remove(newPosition);
notifyItemRemoved(newPosition);
notifyItemRangeChanged(newPosition, contactListFiltered.size());
});
这肯定会引发错误。我该如何解决。预先感谢。
答案 0 :(得分:0)
尝试
public void onDelete(Districtpost contact) {
if(contactListFiltered != null && contactListFiltered.size > 0){
contactListFiltered.remove(contact);
notifydatasetchanged();
}});
答案 1 :(得分:0)
尝试一下:
yourList.remove(position); //Remove item from list
notifyItemRemoved(position); //notify changes made to the adapter.