【问题标题】:Get value of ListView item in Android在 Android 中获取 ListView 项的值
【发布时间】:2014-09-20 08:19:22
【问题描述】:

我正在用从我创建的数据库中获取的数据填充我的ListView。我想在长时间点击的ListView 中获取项目的名称。 我尝试过使用以下方法:

 - parent.getItemAtPosition(position).toString();
 - myListView.getItemAtPosition(position).toString();
 - myListView.getSeletedItem(position).toString();

这三个语句运行良好,但是当我通过从数据库中获取数据来填充 LisView 时,我得到了以下值返回:

09-20 13:01:22.370: I/System.out(5351): android.database.sqlite.SQLiteCursor@426925b0

而我点击的项目名称是“Home”..

请帮助我。如何将android.database.sqlite.SQLiteCursor@426925b0 转换为Home

我的适配器:

mCursor = mDB.fetchData();
String[] columns = new String[] { AreaDatabase.KEY_AREA };
    int[] to = new int[] { R.id.tvArea };

    mAdapter = new SimpleCursorAdapter(this, R.layout.lvarea, mCursor,
            columns, to);
    lvArea.setAdapter(mAdapter);

fetchData() 函数:

public Cursor fetchAreaData() {
    Cursor mCursor = ourDatabase.query(AREA_TABLE_NAME, new String[] {
            KEY_ROWID, KEY_AREA }, null, null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }

    return mCursor;
}

【问题讨论】:

  • @ Adeel Shahzad ........ 欢迎来到 Stackoverflow ....... 发布格式正确的代码以及您迄今为止尝试过的内容......以便我们提供帮助你更快......!

标签: android sqlite listview android-listview


【解决方案1】:

Cursor 有方法getString(int columnIndex)。您可以使用它从指定列索引的Cursor 中获取String 值。

> Cursor currentCur = myListView.getItemAtPosition(position);
> String name = currentCur.getString(1); //It will return KEY_AREA (column index 1) value from Cursor

【讨论】:

  • 适用于 ListView 中的第一个条目。但是在 ListView 中的第二个条目出现此错误
    09-20 13:41:21.970: E/AndroidRuntime(8396): java.lang.IllegalStateException: Couldn't read row 1, col 2 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
  • 你能提供调用getString()方法的代码吗?
  • 您是否使用位置作为 columnIndex?你不应该。 position 更像是光标所在行的位置,而不是列的位置。所以你只需调用 getString(1);每个项目
  • 我为我犯的一个愚蠢的错误道歉。我正在调用 getString() 方法并将position + 1 作为参数传递。我通过传递包含值的列索引再次调用该方法并得到正确答案。感谢您的快速帮助,伙计。
【解决方案2】:

这样做:

parent.getItemAtPosition(position).toString();

【讨论】:

  • 仍然得到相同的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多