带有onitemclick的列表视图中的Android游标适配器

时间:2014-12-08 19:41:45

标签: android

你可以帮我吗,我有这样的DB:

public static final String DB_CREATE =
            "create table " + DB_TABLE + " (" +
                    COLUMN_ID + " integer NOT NULL PRIMARY KEY AUTOINCREMENT, " +
                    COLUMN_PATH + " text UNIQUE," +
                    COLUMN_NAME + " text," +
                    ");";

在另一个班级

final Cursor cursor = activity.getDb().getEByPath(path);
        String [] colums = new String[]{
            DB.COLUMN_NAME
        };
        int[] to = new int[]{
                R.id.text
        };
        cursorAdapter = new SimpleCursorAdapter(getActivity(),
                R.layout.file_list_item,
                cursor,
                colums,
                to,
                0);
        final ListView filesTable = (ListView) view.findViewById(R.id.files_list);
filesTable.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int pos, long id) {
                Cursor cursor1 = (Cursor)cursorAdapter.getItem(pos);
                Log.d(TAG, cursor1.getString(cursor1.getColumnIndexOrThrow(DB.COLUMN_PATH)));
            }
        });

        filesTable.setAdapter(cursorAdapter);

所以点击我的项目之后我想获得更多信息,哪些存储在数据库中。但除了我COLUMN_NAME我做错了什么之外,我不能得到其他的东西吗?

2 个答案:

答案 0 :(得分:0)

当您使用列Array处理时,Cursor仅从数据库而不是其他列读取名称列。您必须将所有数据直接加载到一个Cursor中,然后使用自定义适配器将数据设置为TextView。或者,您可以在onItemClick()中运行新查询,并从新Cursor获取其他信息。

答案 1 :(得分:0)

您只为适配器提供了COLUMN_NAME ...如果您想要显示更多信息, 添加更多字段:

  String [] colums = new String[]{
        DB.COLUMN_NAME
        DB.ANOTHER_NAME
        DB.ONE_MORE_NAME
    };

您的适配器只想填充单个字段,但您可以使用额外数据来获取弹出窗口或对话框中的字符串中的额外信息