Установить все возвращенные данные в текстовое представление из sqlite - PullRequest
0 голосов
/ 05 декабря 2018

Я хочу установить случайные данные из моей таблицы в одно текстовое представление. Я могу выбрать случайные данные из sqlite, но не могу установить их в свое текстовое представление. Вероятно, я не должен использовать setText, чтобы поместить их туда.Функция «Генерировать» должна каждый раз выводить случайные данные из этой таблицы.

- основной класс -

У меня проблема здесь (Часть вышеуказанного класса)

private void generatecompliment() {
    Cursor cursor = mydb.generatecompliments();
    cursor.moveToFirst();
    String[] compliments1 = new String[cursor.getCount()];
    //cursor.moveToNext();
    shwtxt.setText(cursor.getString(1));

}}

- databasehelper class-

    public Cursor generatecompliments () {
        SQLiteDatabase sqLiteDatabase2 = getReadableDatabase();
        String sql ="SELECT * FROM " + TABLE_NAME2 + "ORDER BY RANDOM() LIMIT 1";
        return sqLiteDatabase2.rawQuery(sql, null);
    } 
}

Примечание: у меня есть третий класс, который использует другую таблицу, но я не поставилон здесь, так как работает нормально.

Спасибо за помощь.

1 Ответ

0 голосов
/ 05 декабря 2018

У вас есть два варианта

Я полагаю, что вы хотели бы что-то вроде: -

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

Разница в том, что первый получаетмассив String имен столбцов с использованием метода Cursor getColumnNames , в то время как второй извлекает количество столбцов, извлеченных из курсора getColumnCount method.

  • Это предполагает, что, сказав все возвращаемые данные , вы хотите, чтобы данные из всех столбцов были объединены.
  • Это также предполагает, чтовам нужен пробел, отделяющий данные от каждого столбца.
  • Существует также предположение, что shwtxt был соответствующим образом создан.
  • Приведенный выше код является принципиальным кодом,он не был протестирован или запущен, поэтому может содержать небольшие ошибки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...