Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 正在从RecyclerView中删除项目_Android - Fatal编程技术网

Android 正在从RecyclerView中删除项目

Android 正在从RecyclerView中删除项目,android,Android,我无法从RecyclerView中删除项目。当我单击delete时,该项目将从RecyclerView中删除,但当我再次打开应用程序时会返回。我希望这只是一个小问题,有人在这里可以指出或指导我到什么地方进行故障排除。粗体的removeItem(字符串项)是我认为存在的问题。你在这篇文章中看不到它,但它是“未使用的” 公共类RecycleServiceAdapter扩展了RecyclerView.Adapter{ 私有列表数据; 私人SQLGroceryHelper助手; 循环水适配器; //适配

我无法从RecyclerView中删除项目。当我单击delete时,该项目将从RecyclerView中删除,但当我再次打开应用程序时会返回。我希望这只是一个小问题,有人在这里可以指出或指导我到什么地方进行故障排除。粗体的removeItem(字符串项)是我认为存在的问题。你在这篇文章中看不到它,但它是“未使用的”

公共类RecycleServiceAdapter扩展了RecyclerView.Adapter{
私有列表数据;
私人SQLGroceryHelper助手;
循环水适配器;
//适配器的构造函数//
公共回收服务适配器(列表mDataList){
this.mListData=mDataList;
}
//提供每个联系人项目视图的参考//
公共类MyViewHolder扩展了RecyclerView.ViewHolder{
文本视图行项目;
图像按钮购买按钮;
图像按钮删除按钮;
线性布局线性布局;
公共MyViewHolder(查看项目视图){
超级(项目视图);
linearLayout=(linearLayout)itemView.findViewById(R.id.recycler\u行);
rowItem=(TextView)itemView.findViewById(R.id.item_field1);
purchasedButton=(ImageButton)itemView.findViewById(R.id.item_purchased);
deleteButton=(ImageButton)itemView.findViewById(R.id.delete_item);
}
}
//根据提供的viewtype为视图充气//
@凌驾
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
//通过膨胀行项目xml创建新视图//
View row=LayoutInflater.from(parent.getContext()).flate(R.layout.recycler_row,parent,false);
//将视图设置为ViewHolder//
MyViewHolder=新的MyViewHolder(行);
报税表持有人;
}
//在指定位置显示数据//
@凌驾
公共无效onBindViewHolder(最终MyViewHolder,最终int位置){
holder.rowItem.settText(mListData.get(position.getTextItem());
holder.purchasedButton.setOnClickListener(新视图.OnClickListener(){
//暂时忽略此单击//
@凌驾
公共void onClick(视图v){
移除项目(位置);
}
});
holder.deleteButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
移除项目(位置);
}
});
}
公共无效**删除项**(字符串项){
int position=mListData.indexOf(项目);
如果(位置!=-1){
mListData.remove(项目);
已移除(位置)的项目;
}
}
公共无效删除项(内部位置){
mListData.remove(位置);
已移除(位置)的项目;
}
@凌驾
public int getItemCount(){
if(mListData==null){
返回0;
}
返回mListData.size();
}
}

您正在从本地对象删除数据,
mListData
我猜原始数据对象保持不变。同时从原始数据对象中删除数据项

声明接口

公共接口适配器通信{
无效再投资项目(内部位置);
}

然后在适配器中

private AdapterCommunication mListener;

public void setOnClickListener(AdapterCommunication listener){
              mListener = listener;
}
然后从初始化适配器的活动开始

RecyclerViewAdapter adapter = new RecyclerViewAdapter(list);

adapter.setOnClickListener(new AdapterCommunication{

 public void removeStringItem(int position){
     list.remove(position);
     adapter.notifyDataSetChanged();
  }
});
在你的adaper里

holder.deleteButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mListener.remove(position);
        }
    });

由于某些原因,我无法删除字符串项。不确定我是否用了错误的方法。发布与从原始数据objectpublic void removeItem(string item){int position=mListData.indexOf(item);if(position!=-1){mListData.remove(item);notifyItemRemoved(position);}有关的代码。查看注释,我可以看出,您没有从原始对象中删除字符串对象。您正在通过
新的RecycleServiceAdapter(dataObject)
调用适配器,您还需要从此dataObject中删除字符串项。我同意您的看法。我只是不知道如何删除字符串项。或者我需要把它从另一个地方移走。我对这个很陌生。你正在从数据库中删除数据吗?
holder.deleteButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mListener.remove(position);
        }
    });