Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Андрей1981
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 114
1

SQLite Android и вывод данных в TextView

25.06.2018, 18:35. Просмотров 1318. Ответов 8
Метки нет (Все метки)

Использую SQLite для хранения и доступа к данным в андроид-приложении. Задаю

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public final class TaskCursorWrapper extends CursorWrapper {
public TaskCursorWrapper(Cursor cursor) {
    super(cursor);
}
 
public Main2Activity.ObjectA getObjectA() {
    String task = getString(getColumnIndex(TestDbSchema.TestTable.Cols.TASK));
    Double answer = getDouble(getColumnIndex(TestDbSchema.TestTable.Cols.ANSWER));
    int item_id = getInt(getColumnIndex(TestDbSchema.TestTable.Cols._ID));
 
    Main2Activity.ObjectA O = new Main2Activity.ObjectA(new UUID(0,0));
    O.setTask(task);
    O.setAnswer(answer);
 
    return O;
}}
Для доступа к данным по выбранному ID

Java
1
2
3
4
5
6
7
8
9
10
11
public class ObjectO {
 
    public TextView getObjectO() {
        TaskCursorWrapper mTaskCursorWrapper = queryTask(null, null);
        mCurrentIndex = mCurrentIndex + 1;
        mTaskCursorWrapper.moveToPosition(mCurrentIndex);
        mTaskConditionTo.setText(mTaskCursorWrapper.getObjectA().getTask());
 
        return mTaskConditionTo;
    }
}
Для вывода в текстовое поле значения из базы поля TASK пишу в OnCreate
Java
1
2
3
ObjectO OO = new ObjectO();
    mTaskConditionTo = findViewById(R.id.view_1);
    mTaskConditionTo = OO.getObjectO();
Но вместо ожидаемых текстовых значений (к примеру, "Условие!") в mTaskConditionTo выводится набор каких-то цифр (к примеру, "2131492912").
При этом, то, где прописываю mTaskConditionTo = findViewById(R.id.view_1) не имеет значения - в OnCreate или в ObjectO.


Я так понимаю, ошибка в преобразовании типов. Но никак не возьму в толк, где?

Добавлено через 21 час 28 минут
Так никто и не может ответить на вопрос...
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2018, 18:35
Ответы с готовыми решениями:

Вывод данных по ключевым словам. Android SQLite
Здравствуйте! Требуется создать приложение, которое бы осуществляло поиск по базе данных и вывод...

Импорт данных из Excel в SQLite Android
Добрый вечер! Подскажите как имортировать данные из EXCEL файла в в SQLite. Гугл выдает много...

Android, ListView, база данных SQLite
Как достать картинку из БД (SQLite) и поместить её в ListView??? помогите, пожалуйста :)

Android базы данных SQLite, Реализация MVC
Всем привет, такой вопрос, я подключаю базу к андроид проекту и беру информацию из базы каждый раз...

Android Studio не находит функцию TextView в пакете Android.Widget
Я создал новый проект в Android Studio. Android Studio не находит функцию TextView в пакете...

8
ExFau$t
967 / 766 / 229
Регистрация: 08.05.2012
Сообщений: 3,668
25.06.2018, 18:54 2
Код нечитабельный это раз, а два
Java
1
mTaskConditionTo = findViewById(R.id.view_1);
в переменную записывается id view, так что:
Цитата Сообщение от Андрей1981 Посмотреть сообщение
выводится набор каких-то цифр
- всё правильно.
0
Андрей1981
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 114
26.06.2018, 21:22  [ТС] 3
Вы серьезно?
0
+1
328 / 161 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
27.06.2018, 05:03 4
это что?
Цитата Сообщение от Андрей1981 Посмотреть сообщение
mTaskConditionTo = OO.getObjectO();
Вывод текста вообще-то
Java
1
mTaskConditionTo.setText("anyText");
0
27.06.2018, 05:03
Андрей1981
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 114
27.06.2018, 21:19  [ТС] 5
Да, я использую
Java
1
mTaskConditionTo.setText("anyText");
в блоке *класса ObjectO
а именно
Java
1
mTaskConditionTo.setText(mTaskCursorWrapper.getObjectA().getTask());
Но это не помогает

В частности, если я в этом классе пишу
Java
1
2
mTaskConditionTo.setText(mTaskCursorWrapper.getObjectA().getTask());
mTaskConditionTo = findViewById(R.id.view_1);
то возвращает не набор цифр, а значение view_1 по умолчанию. То есть опять не то.
Я так понимаю, что проблема в выражении "mTaskCursorWrapper.getObjectA().getTask()". Или я не прав?
0
Vladimir93
78 / 77 / 14
Регистрация: 28.06.2015
Сообщений: 322
28.06.2018, 11:08 6
Цитата Сообщение от Андрей1981 Посмотреть сообщение
в блоке *класса ObjectO
а именно
Java
Выделить код
1
mTaskConditionTo.setText(mTaskCursorWrapper.getObjectA().getTask());
А где тут String? Тут объект - простите за тавтологию.
Вот тут есть, а у вас - нет.
Цитата Сообщение от Андрей1981 Посмотреть сообщение
mTaskConditionTo.setText("anyText");
Вам надо либо "прибавить" ваш объект
Java
1
mTaskConditionTo.setText(""+mTaskCursorWrapper.getObjectA().getTask());
либо так
Java
1
mTaskConditionTo.setText(mTaskCursorWrapper.getObjectA().getTask().toString());
Или даже так
Java
1
mTaskConditionTo.setText(mTaskCursorWrapper.getObjectA().getTask().getText().toString());
P.S.
И с кодом чего то сделайте, ибо он реально режет глаз, и пропадает желание вчитываться.
0
Андрей1981
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 114
28.06.2018, 23:14  [ТС] 7
Vladimir93, спасибо за ответ, только не помогает то, что Вы предложили, к сожалению
А в последнем выражении getText выделяет красным и пишет, что cannot resolve method...
0
+1
328 / 161 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
29.06.2018, 14:21 8
Цитата Сообщение от Андрей1981 Посмотреть сообщение
mTaskConditionTo.setText(mTaskCursorWrapper.getObjectA().getTask());
mTaskConditionTo = findViewById(R.id.view_1);
Так потому что эти строки надо местами поменять - сначала указать кто это такой mTaskConditionTo, а потом писать туда текст.
0
Андрей1981
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 114
09.07.2018, 22:53  [ТС] 9
Нашлось решение
Как же я сразу не догадался
Ведь в CursorWrapper должна упаковываться ссылка на идентификатор ресурса, а значение строкового ресурса хранится в стрингах. Поэтому в приведенном ниже участке кода для определения переменной используется не getString, a getInt.


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public final class TaskCursorWrapper extends CursorWrapper {
    public TaskCursorWrapper(Cursor cursor) {
        super(cursor);
    }
 
    public Main2Activity.ObjectA getObjectA() {
 
        int taskId = getInt(getColumnIndex(TestDbSchema.TestTable.Cols.TASK));
 // Вместо getString, как было раньше 
        Double answer = getDouble(getColumnIndex(TestDbSchema.TestTable.Cols.ANSWER));
 
 
        Main2Activity.ObjectA O = new Main2Activity.ObjectA(new UUID(0,0));
 
        O.setTaskId(taskId);
        O.setAnswer(answer);
 
        return O;
    }
}
И спасибо всем, что указали не нечитаемость кода. Буду над этим работать
0
09.07.2018, 22:53
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2018, 22:53

SQLite вывод данных
Здравствуйте. Подскажите, как вывести данные из колонки БД и записать в массив. Пытался пока что...

Подскажите почему не выводит данные в textview из sqlite
У меня есть две активности helper и helperRec На первой есть глобальная переменная public static...

Вывод данных из базы данных SQLite
Здравствуйте уважаемые форумчане! Делаю программу для работы с базой данных SQLite. Смысл простой:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.