使用 Arrayadapter 在列表视图上显示存储在数据库中的元素。现在我想从列表视图和数据库中删除项目。请帮我解决它。
问问题
1135 次
3 回答
0
要从数据库中删除行,请尝试使用示例http://codinglookseasy.blogspot.in/2012/08/sqlite-database.html。并在从数据库中删除后,从 arrayadapter 中删除项目并使用 adapter.notifyDataSetChanged() 从列表视图中删除它
于 2012-09-10T05:20:13.323 回答
0
考虑使用游标适配器将列表视图绑定到您的数据库表。这里有一个例子:http: //thinkandroid.wordpress.com/2010/01/09/simplecursoradapters-and-listviews/
该示例使用已弃用的“startManagingCursor”,它已被弃用,取而代之的是 CursorLoader。一旦你最终实现了 CursorLoader,它就很好了。您注册了一些侦听器,您的 UI 会立即更新以反映对数据库的任何更改(无需手动添加/删除列表视图中的行)。
于 2012-09-10T05:31:54.497 回答
0
这是我的代码:
Cursor c = db.rawQuery("SELECT * FROM BOOKMARKS", null);
ID = c.getColumnIndex("ID");
audiotime=c.getColumnIndex("BookmarkTime");
// Check result.
c.moveToFirst();
if (c != null)
{
// Loop through all Results
do
{
/*String str=c.getString(ID);
audiobooks.add(str);*/
str=c.getString(audiotime);
audiobooks.add(str);
}
while(c.moveToNext());
c.close();
db.close();
//TODO
arrayAdapter=new ArrayAdapter<String>(this, R.layout.row3, R.id.itemr1,audiobooks);
lv.setAdapter(arrayAdapter);
cursor.close();
db.close(); //close db resources
}
public void onClick(View v)
{
if(v.getId()==R.id.Delete)
{
db = openOrCreateDatabase("DB", 0, null);
db.delete("BOOKMARKS", null, null);
int j=lv.getCount();
Toast.makeText(GetAudioBookmarks.this, " after delete listview count " +j,Toast.LENGTH_SHORT).show();
}
我无法做到这一点,因为我只将书签字符串添加到列表视图中。我已经粘贴了我的代码,它将从数据库中获取数据并添加到列表视图中。现在我的代码将像单击删除一样工作,将删除数据库上的所有项目,但列表视图计数将与它保持的值相同,但不会在列表视图上显示任何数据。
于 2012-09-12T04:45:09.143 回答