我正在编写一个Android简单待办事项列表应用程序,用于学习目的。
这是我的功能,用列表项更新UI:
private void updateUI() {
helper = new TaskDBHelper(MainActivity.this);
SQLiteDatabase sqlDB = helper.getReadableDatabase();
Cursor cursor = sqlDB.query(TaskContract.TABLE,
new String[]{TaskContract.Columns._ID, TaskContract.Columns.TASK },//, TaskContract.Columns.DESCRIPTION},
null, null, null, null, null);
listAdapter = new SimpleCursorAdapter(
this,
R.layout.task_view,
cursor,
new String[]{TaskContract.Columns.TASK}, //TaskContract.Columns.DESCRIPTION },
new int[]{R.id.taskTextView},
0
);
this.setListAdapter(listAdapter);
}
我需要一个SQlite语句来删除列表中的最后一项。由于我是Android新手,所以感谢任何帮助。
答案 0 :(得分:1)
首先,您需要使用count
或length
等内容计算列表中的项目,然后按索引获取项目(获取带有计数项目的索引)并将其删除
答案 1 :(得分:1)
在SO问题中已经涵盖了在Android中删除行
Deleting Row in SQLite in Android。基本上,您使用delete()
上的SQLiteDatabase
方法:
db.delete(tableName, whereClause, whereArgs);
所以,举个例子:
db.delete(TABLE_NAME, KEY_ID + "=?", new String[] { String.valueOf(keyIdOfRowToDelete) } );
您要删除的行的正确KEY_ID
位于光标的最后一行,可通过moveToLast()
方法访问:
cursor.moveToLast();
int keyIdOfRowToDelete = cursor.getInt(cursor.getColumnIndex(KEY_ID_COLUMN_NAME));
删除必要的条目后,像在问题中一样运行另一个query()
,刷新Cursor
,然后通过首先调用{{1}来更新SimpleCursorAdapter
使用新光标,然后swapCursor()
:
notifyDataSetChanged()