Hello stackoverflow社区, 我在Android中遇到问题,尤其是SQLite。我创建了一个应用程序,您可以在其中创建待办事项列表。我使用ContentResolver在此应用程序中工作,列表显示在一个简单的ListView中。 Actual Layout。 List通过Cursor LoaderManager进行排序并具有升序。预测如下:
String[] projection = {
ToDoContract._ID,
ToDoContract.COLUMN_IMAGE,
ToDoContract.COLUMN_HEADLINE,
ToDoContract.COLUMN_DESCRIPTION,
ToDoContract.COLUMN_PRIORITY,
ToDoContract.COLUMN_WEEKDAY,
ToDoContract.COLUMN_DONE
};
String sortOrder = ToDoContract.COLUMN_WEEKDAY + " ASC";
工作日是整数(1 =星期一,7 =星期日)因为我不知道另一种方式来排序工作日。
我的问题如下: 我想删除或编辑这些条目,我不知道如何获取条目的行号。 ListView是为ContextMenu注册的。 这是一个例子: 我使用以下代码获取ContextMenu位置:
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int index = info.position;
现在我在ListView中有位置,但我需要在sqlite数据库中的位置。我的正常方式是我创建一个带有附加ID的Uri
Uri currentListUri = ContentUris.withAppendedId(ToDoContract.CONTENT_URI, index);
但是因为我的名单已经订购,所以这种方式不起作用。 SQLite中的ID可能是4,在我的ListView中,它是1.它是否有人提示如何获得有序位置?
编辑:
说清楚,我已经通过这种方法得到了我的数据库的数量:
TableDBHelper dbHelper = new TableDBHelper(getContext());
long count = dbHelper.getTodoCount();
getTodoCount();如下:
public long getTodoCount() {
SQLiteDatabase db = this.getReadableDatabase();
long count = DatabaseUtils.queryNumEntries(db, ToDoContract.TABLE_NAME);
db.close();
return count;
}