android - 无法从 ListView 获取选定的项目文本

标签 android sqlite listview simplecursoradapter

我只是想在用户单击的行的 ListView 中显示文本。

ListView 和适配器

ListView listCurrent = (ListView)findViewById(R.id.currentlinkslist);

    try {
        SQLiteOpenHelper tractionDatabaseHelper = new TractionDatabaseHelper(this);
        db = tractionDatabaseHelper.getReadableDatabase();
        String query = "SELECT _id, QUESTION FROM QUESTION";

        cursor = db.rawQuery(query, null);

        CursorAdapter listAdapter = new SimpleCursorAdapter(this,
                android.R.layout.simple_list_item_1,
                cursor,
                new String[]{"QUESTION"},
                new int[]{android.R.id.text1},0);

        listCurrent.setAdapter(listAdapter);

    }catch(SQLiteException e) {
        Toast.makeText(this, "Database unavailable", Toast.LENGTH_SHORT).show();
    }


    AdapterView.OnItemClickListener itemClickListener =
            new AdapterView.OnItemClickListener() {
                public void onItemClick(AdapterView<?> listCurrent,
                                        View v, int position, long id) {
                    String selectedItem = listCurrent.getItemAtPosition(position).toString();
                    Toast.makeText(AssociateActivity.this,
                            selectedItem , Toast.LENGTH_SHORT).show();

                }
            };

    listCurrent.setOnItemClickListener(itemClickListener);

从我所看到的一切来看,AdapterView.OnItemClickListener 中的这段代码应该获取描述:

String selectedItem = listCurrent.getItemAtPosition(position).toString();
Toast.makeText(AssociateActivity.this, selectedItem, Toast.LENGTH_SHORT).show();

相反,我不断得到:

toast: android.database.sqlite .SQLiteCursor@ab394dd

我做错了什么?

最佳答案

方法 getItemAtPosition() 返回一个 SQLiteCursor 对象,这种对象没有方法 toString() 的实现。所以在这种情况下,您必须返回游标本身并将其解析为您的对象,然后再调用 toString() 方法。

SQLiteCursor cursor = (SQLiteCursor) listCurrent.getItemAtPosition(position);
 String selectedItem = cursor.getString(columIndex); //columIndex is not the position

Toast.makeText(AssociateActivity.this, selectedItem, Toast.LENGTH_SHORT).show();

关于android - 无法从 ListView 获取选定的项目文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43688458/

相关文章:

android - 将系统日期和时间与数据库日期和时间分开比较,以开始另一项 Activity

python - 当顺序无关紧要时,为 Web 构建适当的 SQL 查询

android - 如何在ListView中捕获复选框事件

android - 包含 ListView 的 ViewFlipper 的手势问题

android - 覆盖触控板点击

android - 关于在 Android Studio 和 SQlite 中更新数据

android - 数据持久化ViewPager

android - 应用程序终止时从 Activity 调用方法到服务

sql - SQLite3::SQLException:Rails应用没有这样的表

python - 在 Python SQLite 中使用进度处理程序执行许多查询