问题描述
我得到了一个包含以下布局的SQL数据库:
该表称为messages
,大约有5列。
我创建了一个游标,它应该使用以下命令从两列中获取所有值:
public List<String> getContacts(SQLiteDatabase db) {
List<String> List = new ArrayList<String>();
// Select All Query
String selectQuery = "SELECT `from`,`to` FROM messages";
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
List.add(cursor.getString(1));
} while (cursor.moveToNext());
}
return List;
}
在这里,我将值添加到ListView中:
DatabaseHelper dbHelper = new DatabaseHelper(
this.getApplicationContext());
newDB = dbHelper.getWritableDatabase();
List<String> all = dbHelper.getContacts(newDB);
if (all.size() > 0) // check if list contains items.
{
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, all));
} else {
Toast.makeText(ConversationsList.this, "No items to display", 1000)
.show();
}
是的,值被添加了,但是只有me
很奇怪。
我究竟做错了什么?
编辑:通过更改此解决:
if (cursor.moveToFirst()) {
do {
List.add(cursor.getString(0));
List.add(cursor.getString(1));
} while (cursor.moveToNext());
}
至:
if (cursor.moveToFirst()) {
do {
List.add(cursor.getString(0));
List.add(cursor.getString(1));
} while (cursor.moveToNext());
}
1楼
您的List<String> List
和
do {
List.add(cursor.getString(1));
} while (cursor.moveToNext());
造成了问题。
如果您无法更改列表类型,
do {
List.add(
cursor.getString(1) +","
cursor.getString(1) +","
...
+cursor.getString(n));
} while (cursor.moveToNext());
会将每个记录的逗号分隔值提取到String中。 您可以分割字符串并单独使用值。