如何从活动中从Recycleview中删除项目

时间:2019-09-01 15:12:06

标签: java android android-recyclerview

我在实现搜索功能的地方使用了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());
        
        });

这肯定会引发错误。我该如何解决。预先感谢。

2 个答案:

答案 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.