【问题标题】:Can't get selected item text from ListView无法从 ListView 获取选定的项目文本
【发布时间】:2017-09-27 01:25:44
【问题描述】:

我只是试图让用户单击的行的 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();

相反,我不断得到:

我做错了什么?

【问题讨论】:

  • Cursor cursor = (Cursor) listCurrent.getItemAtPosition.(position);

标签: android sqlite listview simplecursoradapter


【解决方案1】:

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();

【讨论】:

  • 谢谢,这个解决方案与我的小修改完美配合。
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多