从Android中的SQLdatabase中删除行ID

时间:2017-07-03 10:00:15

标签: android listview sql-delete android-database

我正在尝试从列表适配器中删除一行listview,如果单击一个按钮,它将查找id并将其发送到数据库以进行删除。我写的方法返回最后一个可用的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();

}

这是数据库类:

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;

}

1 个答案:

答案 0 :(得分:1)

在删除按钮onClick方法中,你必须使用poistion从列表中获取Id,并需要在删除记录功能中传递它。

DeleteBtn.setOnClickListener(
            new View.OnClickListener() {
                public void onClick(View view) {
                    ID = getItem(position).H_ID;
                    DeleteRecord();
                }
            }
    );

删除数据库中的记录和已分配给适配器的列表后,需要调用notifiy数据集更改方法以反映列表视图。