我遇到了实施删除按钮的问题。它应该从RecyclerView中删除一个项目,如果你点击它。我的布局文件包含两个TextViews和ImageButton的,像这样:为什么我的删除按钮在RecyclerView中不起作用?
<TextView
android:id="@+id/layout_list_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:textStyle="bold"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/layout_list_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/layout_list_name"
android:layout_alignLeft="@+id/layout_list_name"
android:layout_below="@+id/layout_list_name" />
<ImageButton
android:id="@+id/layout_list_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:contentDescription="@string/layout_list_delete" />
这是管理的RecyclerView的项目和功能,我的适配器类:
List<RecyclerViewListSchema> list;
public RecyclerViewListAdapter(List<RecyclerViewListSchema> list) {
this.list = list;
}
public static class RecyclerViewViewHolder extends RecyclerView.ViewHolder {
TextView name;
TextView date;
ImageButton delete;
public RecyclerViewViewHolder(View view) {
super(view);
name = (TextView) view.findViewById(R.id.layout_list_name);
date = (TextView) view.findViewById(R.id.layout_list_date);
delete = (ImageButton) view.findViewById(R.id.layout_list_delete);
}
}
@Override
public RecyclerViewViewHolder onCreateViewHolder(ViewGroup viewGroup, int position) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_list, viewGroup, false);
RecyclerViewViewHolder viewHolder = new RecyclerViewViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerViewViewHolder viewHolder, final int position) {
viewHolder.name.setText(list.get(position).name);
viewHolder.date.setText(list.get(position).date);
viewHolder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
RecyclerViewListSchema item = list.get(position);
list.remove(position);
notifyItemRemoved(position);
}
});
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public int getItemCount() {
return list.size();
}
更新: 这是确切的位置在我的删除功能的工作原理删除项目:
@Override
public void onBindViewHolder(RecyclerViewViewHolder viewHolder, final int position) {
viewHolder.name.setText(list.get(position).name);
viewHolder.date.setText(list.get(position).date);
viewHolder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
RecyclerViewListSchema item = list.get(position);
list.remove(position);
notifyItemRemoved(position);
}
});
}
我RecyclerView填充一个从SQLite数据库中选择它旁边的按钮。我尝试点击它,但它没有做任何事情。我的代码中发生了什么?我做错了什么?有关如何解决此问题的任何建议?
也表明你在哪里点击删除按钮 – AADProgramming
你更新你的SQLite数据库的代码?您应该从数据库中删除项目。 – Amir
我已经整理出我的问题。显然,我上面提供的代码实际上工作。出于某种原因,当我一直在手机上运行我的应用程序时,该应用程序未更新,因此我必须将其卸载并重新安装。感谢大家的帮助! – GWX