我正在使用SimpleCursorAdapter
从数据库中获取数据并将其显示在ListView
中。
请有人告诉我如何从该列表中选择/删除一个或多个列表项。
或者至少告诉我如何使用ArrayAdapter
从数据库中获取数据,以便在ListView
中显示它。
教程将是最佳实践。
提前致谢。
答案 0 :(得分:0)
请有人告诉我如何选择/删除一个或多个列表项 那份清单。
因此,您需要获取每行的id才能从数据库中删除正确的项目。当时从List中只删除一个项目的问题并不太棘手,只需创建一些OnItemClickListener或ContextMenu并提供给User delete选项。然后,如果您正在使用某些CursorAdapter,则从OnItemClick方法的long id参数自动获取所选项的rowId。在ContextMenu的情况下,您可以从AdapterView.ContextMenuInfo获取id。
如果您想要删除更多那个,那么问题就是这种情况,并且任何监听器或ContextMenu的使用都不够和有效。你应该决定创建自己的ListView行,你将拥有CheckBox,然后你可以简单地删除那一行。你去抛出List和CheckBox中检查的每一行从数据库中删除并使List刷新。这是我的第一个想法。
或者至少告诉我如何使用数据从数据库获取数据 ArrayAdapter在ListView中显示它。
如果您想使用ListAdapter(ArrayAdapter,BaseAdapter等),那么现在需要从数据库中获取记录列表。我建议你创建自己的ListAdapter子类,以获得对Adapter的更多控制。在这里,我建议您创建自己的Object,它将表示数据库中的表,其中Object的属性等于表中的列。然后只需从数据库中获取List。我将在下面给你伪代码。
public List<OwnObject> getAll() {
List<OwnObject> items = new ArrayList<OwnObject>();
OwnObject o = null;
Cursor c = null;
try {
db = helper.getReadableDatabase(); // or created some method as open();
String query = "select * from TableName";
c = db.rawQuery(query, null);
if (c.moveToFirst()) {
do {
o = new OwnObject();
o.setProperty1(c.getString(c.getColumnIndex("Column1")));
o.setProperty2(c.getString(c.getColumnIndex("Column2")));
o.setProperty3(c.getString(c.getColumnIndex("Column3")));
...
items.add(o);
} while (c.moveToNext());
}
return items;
}
finally {
if (c != null) {
c.close();
}
// close also db
}
}