在 Android 中从 SQL 数据库中按 ID 删除行
Delete Row By id from SQLdatabase in Android
我正在尝试从列表适配器中删除一行列表视图,如果单击一个按钮,它将查找 ID 并将其发送到数据库以供删除。我写的方法 return 最后一个可用的 id 而不是选定的 id。
这是适配器列表
public class HistoryAdapter extends ArrayAdapter<NassrahHelper> {
int ID;
public HistoryAdapter(@NonNull Context context, ArrayList<NassrahHelper> resource) {
super (context, R.layout.history_listadapter ,resource);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater ListInflate = LayoutInflater.from(getContext ());
ValuesHelper data = getItem(position);
View customView = ListInflate.inflate (R.layout.history_listadapter,parent,false);
ID = data.H_ID;
String first = data.Date;
TextView date = (TextView) customView.findViewById (R.id.DateText);
TextView DeleteBtn = (TextView) customView.findViewById(R.id.DeleteText);
DeleteBtn.setOnClickListener(
new View.OnClickListener() {
public void onClick(View view) {
DeleteRecord();
}
}
);
date.setText (first);
return customView;
}
private void DeleteRecord() {
DataBaseHelper dataBaseHelper = new DataBaseHelper(getContext());
dataBaseHelper.DeleteHistoryRow(ID);
dataBaseHelper.close();
}
这是数据库 Class :
public boolean DeleteHistoryRow(int id) {
SQLiteDatabase database = this.getWritableDatabase ();
database.delete (HISTORY_TABLE, "ID = ?", new String[]{String.valueOf(id)});
Log.w ("DELETE History", "DELTE Secssuffle");
database.close ();
return true;
}
在删除按钮的 onClick 方法中,您必须使用位置从列表中获取 Id,并且需要将其传递给删除记录功能。
DeleteBtn.setOnClickListener(
new View.OnClickListener() {
public void onClick(View view) {
ID = getItem(position).H_ID;
DeleteRecord();
}
}
);
从数据库中删除记录和分配给适配器的列表后,您需要调用通知数据集更改方法来反映列表视图。
我正在尝试从列表适配器中删除一行列表视图,如果单击一个按钮,它将查找 ID 并将其发送到数据库以供删除。我写的方法 return 最后一个可用的 id 而不是选定的 id。 这是适配器列表
public class HistoryAdapter extends ArrayAdapter<NassrahHelper> {
int ID;
public HistoryAdapter(@NonNull Context context, ArrayList<NassrahHelper> resource) {
super (context, R.layout.history_listadapter ,resource);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater ListInflate = LayoutInflater.from(getContext ());
ValuesHelper data = getItem(position);
View customView = ListInflate.inflate (R.layout.history_listadapter,parent,false);
ID = data.H_ID;
String first = data.Date;
TextView date = (TextView) customView.findViewById (R.id.DateText);
TextView DeleteBtn = (TextView) customView.findViewById(R.id.DeleteText);
DeleteBtn.setOnClickListener(
new View.OnClickListener() {
public void onClick(View view) {
DeleteRecord();
}
}
);
date.setText (first);
return customView;
}
private void DeleteRecord() {
DataBaseHelper dataBaseHelper = new DataBaseHelper(getContext());
dataBaseHelper.DeleteHistoryRow(ID);
dataBaseHelper.close();
}
这是数据库 Class :
public boolean DeleteHistoryRow(int id) {
SQLiteDatabase database = this.getWritableDatabase ();
database.delete (HISTORY_TABLE, "ID = ?", new String[]{String.valueOf(id)});
Log.w ("DELETE History", "DELTE Secssuffle");
database.close ();
return true;
}
在删除按钮的 onClick 方法中,您必须使用位置从列表中获取 Id,并且需要将其传递给删除记录功能。
DeleteBtn.setOnClickListener(
new View.OnClickListener() {
public void onClick(View view) {
ID = getItem(position).H_ID;
DeleteRecord();
}
}
);
从数据库中删除记录和分配给适配器的列表后,您需要调用通知数据集更改方法来反映列表视图。