如何从android中的sqlite获取行号?

时间:2017-10-05 09:32:04

标签: android sqlite listview

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;

}

0 个答案:

没有答案