我想将表格中的随机数据设置为单个textview。我能够从sqlite获取随机数据,但是我不能将其设置为textview。也许我不应该使用setText来放置它。 “生成”功能每次应从该表中获取随机数据。
-主班-
我在这里遇到问题(属于上述课程)
private void generatecompliment() {
Cursor cursor = mydb.generatecompliments();
cursor.moveToFirst();
String[] compliments1 = new String[cursor.getCount()];
//cursor.moveToNext();
shwtxt.setText(cursor.getString(1));
}}
-databasehelper类-
public Cursor generatecompliments () {
SQLiteDatabase sqLiteDatabase2 = getReadableDatabase();
String sql ="SELECT * FROM " + TABLE_NAME2 + "ORDER BY RANDOM() LIMIT 1";
return sqLiteDatabase2.rawQuery(sql, null);
}
}
注意:我有一个第三类,它使用另一个表,但由于工作正常,所以未将其放在此处。
感谢帮助。
答案 0 :(得分:0)
您有两个选择
我相信您会想要这样的东西:-
private void generatecompliment() {
boolean done_first_column = false;
StringBuilder sb = new StringBuilder();
Cursor cursor = mydb.generatecompliments();
if (cursor.moveToFirst()) {
for (String column_name; cursor.getColumnNames) {
if (done_first_column) {
sb.append(" "); //<<<<<<<<<< separator between column data
}
sb.append(cursor.getString(csr.getColumnIndex(column_name));
done_first_column = true;
}
}
cursor.close();
shwtxt.setText(sb.toString());
}
或者
private void generatecompliment() {
StringBuilder sb = new StringBuilder();
Cursor cursor = mydb.generatecompliments();
if (cursor.moveToFirst()) {
for (int i =0; i < cursor.getColumnCount(); i++) {
if (i > 0) {
sb.append(" "); //<<<<<<<<<< separator between column data
}
sb.append(cursor.getString(i);
}
}
cursor.close();
shwtxt.setText(sb.toString());
}
区别在于,第一个使用Cursor getColumnNames方法获取列名的String数组,而第二个使用Cursor getColumnCount方法获取列数。