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
我做错了什么之外,我不能得到其他的东西吗?
答案 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
};
您的适配器只想填充单个字段,但您可以使用额外数据来获取弹出窗口或对话框中的字符串中的额外信息