我创建了一个包含 5 列 id 、 name 、 date 、 month 和 year 的数据库。它正在完美地创建,我可以将它放在列表视图中。现在的问题是,当我从数据库中删除一条记录时。我无法获得正确的行 ID 来处理(删除或编辑它)。因为列表视图不指向数据库,只在列表视图中显示来自那里的字符串。
有没有办法在我删除记录后仍然可以获得正确的行 ID 来处理。我想在列表视图中单击时获取记录的行 ID..
获取数据库中用于将 5 项发送到显示活动的数据函数
public ArrayList<String> getData() {
String[] columns = new String[] { KEY_ROWID, KEY_NAME, KEY_DATE,
KEY_MONTH, KEY_YEAR };
Cursor c = db.query(DATABASE_TABLE, columns, null, null, null, null,
null);
String result = "";
int iRow = c.getColumnIndex(KEY_ROWID);
int iName = c.getColumnIndex(KEY_NAME);
int iDate = c.getColumnIndex(KEY_DATE);
int iMonth = c.getColumnIndex(KEY_MONTH);
int iYear = c.getColumnIndex(KEY_YEAR);
ArrayList<String> string_array = new ArrayList<String>();
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
result = c.getString(iRow) + " " + c.getString(iName) + "\t\t"
+ c.getString(iDate) + "\t\t" + c.getString(iMonth)
+ "\t\t" + c.getString(iYear) + "\n";
string_array.add(result);
}
return string_array;
}
在显示活动中调用字符串数组
ArrayList<String> data = db.getData();
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, data);
lv.setAdapter(arrayAdapter);
lv.setOnItemClickListener(this);
删除数据库中的第一个元素后获取行 ID
public long getFROWID() {
String[] columns = new String[] { KEY_ROWID, KEY_NAME, KEY_DATE,
KEY_MONTH, KEY_YEAR };
Cursor c = db.query(DATABASE_TABLE, columns, null, null, null, null,
null);
c.moveToFirst();
int iRow = c.getColumnIndex(KEY_ROWID);
ROWID = c.getString(iRow);
long value = Long.parseLong(ROWID);
return value;
}
数据库类中获取记录删除后第一行id的函数
@Override
public boolean onItemLongClick(AdapterView<?> parent, View listview,
int position, long id) {
IMPID = db.getFROWID() + id;
openContextMenu(lv);
return true;
}
使用简单适配器更新
String[] from = { BdayDatabase.KEY_NAME };
int[] to = { R.id.item_name };
List<HashMap<String, String>> listinfo = new ArrayList<HashMap<String, String>>();
listinfo.clear();
HashMap<String, String> hm = new HashMap<String, String>();
hm.put("name" , BdayDatabase.KEY_NAME);
listinfo.add(hm);
SimpleAdapter adapter = new SimpleAdapter(this, listinfo, R.layout.item_layout, from, to);
lv.setAdapter(adapter);
先感谢您