删除Android中列表中的最后一项

时间:2015-11-12 23:20:24

标签: java android

我正在编写一个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新手,所以感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

首先,您需要使用countlength等内容计算列表中的项目,然后按索引获取项目(获取带有计数项目的索引)并将其删除

答案 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()