Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
_bio
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 28
#1

Данные из SQlite в ListView, обработка события ListView - Android

20.02.2016, 16:09. Просмотров 254. Ответов 5
Метки нет (Все метки)

Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные int из БД.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 mList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                int num;
                userCursor = sqlHelper.database.rawQuery("select * from " + DatabaseHelper.TABLE + " where " +
                        DatabaseHelper.COLUMN_ID + "=?", new String[]{String.valueOf(id)});
 
                
userCursor.moveToPosition(position); 
num = userCursor.getInt(userCursor.getColumnIndex(DatabaseHelper.COLUMN_YEAR)); // В ЭТИХ СТРОКАХ БЕДА
 
 
                String baseUssd = Uri.encode("*") + "697" + Uri.encode("*") + num + Uri.encode("*") + "1"+ Uri.encode("#") ;
                StringBuilder builder = new StringBuilder();
                builder.append(baseUssd);
 
                Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + builder.toString()));
                if (ActivityCompat.checkSelfPermission(UssdMain1Activity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                    // TODO: Consider calling
                    return;
                }
                startActivity(intent);
 
             
            }
        });
При нажатии на первую строчку ListView запрос вроде бы прошел (на эмуляторе GenyMotion вылезла ошибка Connection problem or invalid MMI code, это кст вопрос №2 - Как проверить работоспособность USSD запросов???)

Но при нажатии на следующие строки вылетает ошибка android.database.CursorIndexOutOfBoundsException: Index 1 requested, with a size of 1.
Вероятно косяк вот в этих строках:
Java
1
2
userCursor.moveToPosition(position); 
num = userCursor.getInt(userCursor.getColumnIndex(DatabaseHelper.COLUMN_YEAR));
Подскажите как по правильному реализовать?)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2016, 16:09     Данные из SQlite в ListView, обработка события ListView
Посмотрите здесь:

ListView и SQLite Android
Обработка свайпа в ListView Android
Android События ListView
ListView + SQLite Android
Android Обновление ListView при изменении значений в базе SQLite
ListView ячейки, получить Id элемента из SQLite Android
Android Как найти id записи в SQlite таблице при клике на кнопку расположенную в Listview item?
Android SQLite and ListView. Ввод и вывод данных
Идентификация ListView + SQLite Android
Android Картинка из SQLite в ListView
Загрузка данных из SQLite для каждого пункта ListView Android
Android Как записывать данные из SQLite в ListView

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
20.02.2016, 21:49     Данные из SQlite в ListView, обработка события ListView #2
userCursor и так содержит одну запись, удалите userCursor.moveToPosition(position);
_bio
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 28
20.02.2016, 22:00  [ТС]     Данные из SQlite в ListView, обработка события ListView #3
Rube, Пробовал без записи, ошибка остается(
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
20.02.2016, 22:14     Данные из SQlite в ListView, обработка события ListView #4
Log нужен, особенно строка где указана строка ошибки. Оттуда и надо плясать.

Добавлено через 1 минуту
А также проверять на кол-во записей userCursor.
_bio
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 28
25.02.2016, 14:07  [ТС]     Данные из SQlite в ListView, обработка события ListView #5
Все верно, лог показал, что в userCursor содержались три записи, трех столбцов.
Решение:
Java
1
2
3
if(userCursor.moveToFirst()){
                    num = userCursor.getInt(userCursor.getColumnIndex(DatabaseHelper.COLUMN_YEAR));
                }
alexfoz
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 1
25.02.2016, 17:48     Данные из SQlite в ListView, обработка события ListView #6
Thanks очень полезная фишка
Yandex
Объявления
25.02.2016, 17:48     Данные из SQlite в ListView, обработка события ListView
Ответ Создать тему
Опции темы

Текущее время: 19:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru