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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
#1

Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" - Программирование Android

16.08.2015, 22:01. Просмотров 1352. Ответов 48
Метки нет (Все метки)

Ребят, всем привет! накидайте какие-нить идеи по реализации

ситуация такая есть таблицы - "списки_жанров", "фильмы", "режиссеры"
мне нужно на актитиви с добавлением фильмов иметь такие поля

поле для ввода названия_фильма
дропдаун со списком имеющихся жанров
дропдаун со списком имеющихся режиссеров

то есть задача прикрепить определенный фильм к определенному режиссеру и жанру
знаю, что вместо дропдауна тут используется Spinner кажется, но как осуществить все остальное не в курсе, знаю как это делается в asp.net , а тут полный ноль, подскажите идейки, главная трабл, что не представляю как выбрать списки жанров и режиссеров из таблиц
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2015, 22:01     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры"
Посмотрите здесь:
Android Наилучший способ хранения "таблиц в таблицах"
Android Не работает эмулятор (прекращена работа программы "emulator-arm.exe"
Работа со звуком - "На самом устройстве" - Программно Android
Android Работа с файлами "налету"
Визуализация нажатия на изображение. Как поставить картинку на "нажатие" Android
Android "Attempt to re-open an already-closed object" при работе с SQLite
Notification вывод строки с символами перехода на новую строку "\n" Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 649
17.08.2015, 00:35     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #2
http://startandroid.ru/ru/uroki/vse-...juschij-spisok
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
17.08.2015, 10:36     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #3
Присваиваешь каждому итему свой id, столбцы таблиц будут в виде:
id_N - Название - id_R - id_G
id_R - Режиссер
id_G - Жанр
Выбираешь фильму, режиссера и жанр, кликаешь ОК - выполняется sql - UPDATE [таблица] SET... WHERE id_N =... .
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
17.08.2015, 14:59  [ТС]     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #4
Rube, уже сделал)
скажите, не знаете как отсюда получить ЗНАЧЕНИЯ элемента, мне в spinner попадает имя столбца COLUMN_LNAME, а не его значения. заранее благодарен

Java
1
2
3
4
5
6
7
8
9
10
db = sqlHelper.getReadableDatabase();
            userCursor = db.rawQuery("select * from " + DatabaseHelper.TABLE, null);
            String[] headers = new String[]{DatabaseHelper.COLUMN_LNAME};
 
            Spinner spinner = (Spinner) rootView.findViewById(R.id.spinner_authors);
            // заголовок
            spinner.setPrompt("Choose the list");
            ArrayAdapter<String> LTRadapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, headers);
            LTRadapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
            spinner.setAdapter(LTRadapter);
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
17.08.2015, 16:04     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
headers циклом по записям курсора надо заполнить значениями
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
17.08.2015, 17:53  [ТС]     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #6
Rube,
Java
1
2
3
4
5
6
7
String[] headers = new String[]{DatabaseHelper.COLUMN_LNAME};
            for (int i=0; i<userCursor.getCount();i++) {
              headers[i] = String.valueOf(userCursor.getColumnCount());
            }
                ArrayAdapter<String> LTRadapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, headers);
                LTRadapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
                spinner.setAdapter(LTRadapter);
выдаетошибку
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
at com.example.scinolib2.AddBookActivity$PlaceholderFragment.onCreateView(AddBookActivity.java:119)
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
17.08.2015, 18:07     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #7
Вместо
Java
1
String[] headers = new String[]{DatabaseHelper.COLUMN_LNAME};
напиши
Java
1
String[] headers = new String[userCursor.getCount()];
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
17.08.2015, 18:12  [ТС]     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #8
Mikalai, Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3
такая ошибка в теле цикле теперь

Добавлено через 2 минуты
Mikalai, и каким образом я сообщу какие именно столбцы мне нужны
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
17.08.2015, 18:30     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #9
Массив headers будет отображаться в твоём spinner. В цикле тебе нужно достать из курсора нужные элементы и вставить в массив, как я понял.
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
17.08.2015, 18:34  [ТС]     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #10
Mikalai, цикл один раз выполняется и вылетает с ошибкой, хотя в соunt правильно считает элементы
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
17.08.2015, 18:44     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #11
покажи весь код, ошибку и сроку пометь где она появляется
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
17.08.2015, 18:54  [ТС]     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #12
Mikalai, цикл один раз выполняется и вылетает с ошибкой, хотя в соunt правильно считает элементыMikalai,

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Spinner spinner = (Spinner) rootView.findViewById(R.id.spinner_authors);
            // заголовок
            spinner.setPrompt("Choose the list");
            db = sqlHelper.getReadableDatabase();
            userCursor = db.rawQuery("select * from " + DatabaseHelper.TABLE,null);
            String[] headers = new String[]{DatabaseHelper.COLUMN_LNAME};
 
            String[] h = new String[]{};
            for (int i=0; i<=userCursor.getCount();i++) {
                h[i] = String.valueOf(userCursor.getCount());
            }
                ArrayAdapter<String> LTRadapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, h);
                LTRadapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
                spinner.setAdapter(LTRadapter);
ошибка СТРОКА 10
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at com.example.scinolib2.AddBookActivity$PlaceholderFragment.onCreateView(AddBookActivity.java:121)
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
17.08.2015, 19:08     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #13
ты же создаешь массив без элементов, а обращаться пытаешься к его элементу с индексом 0.
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
17.08.2015, 19:11  [ТС]     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #14
Mikalai,
Java
1
2
3
4
5
6
7
8
9
userCursor = db.rawQuery("select * from " + DatabaseHelper.TABLE, null);
            String[] headers = new String[]{DatabaseHelper.COLUMN_LNAME};
 
            for (int i=0; i<=userCursor.getCount();i++) {
                headers[i] = String.valueOf(userCursor.getCount());
            }
                ArrayAdapter<String> LTRadapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, headers);
                LTRadapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
                spinner.setAdapter(LTRadapter);
ошибка та же на той же строке
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
17.08.2015, 19:17     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #15
ошибка та же, но пишет там наверное - java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

Объясни нормально, что ты хочешь достать из базы и засунуть в спинер? это строки или числа? Как называется КОЛОНКА из которой ты хочешь достать информацию.
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
17.08.2015, 19:21  [ТС]     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #16
Mikalai, я хочу достать значения из таблицы TABLE столбца COLUMN_LNAME, это строки.
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
17.08.2015, 19:29     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #17
Вот так попробуй
Java
1
2
3
4
5
String[] headers = new String[userCursor.getCount()];
 
        for (int i=0; i < userCursor.getCount();i++) {
            headers[i] = userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_LNAME));
        }
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
17.08.2015, 19:32  [ТС]     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #18
Mikalai,сдвиги есть, но пишет такую ошибку
Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 4

на теле цикла выкидывает опять
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
17.08.2015, 19:39     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #19
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я уже сам не соображаю какую чушь пишу )))
Вот так примерно нужно:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
userCursor = db.rawQuery("select * from " + DatabaseHelper.TABLE, null);
 
            List<String> headers = new ArrayList<>();
            if (userCursor != null) {
                if (userCursor.moveToFirst()) {
                    do {
                        String string = userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_LNAME));
                        headers.add(string);
                    } while (userCursor.moveToNext());
                }
            } else {
                return;
            }
 
        ArrayAdapter<String> LTRadapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, headers);
        LTRadapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
        spinner.setAdapter(LTRadapter);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2015, 19:55     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры"
Еще ссылки по теме:
Как добавить строку "." в начале в ListView со своим обработчиком Android
Ошибка "Method call expected" при шифровании RSA Android
Android Как поместить surfaceview или glsurfaceview на "пол" экрана
Почему приложение может пропасть из "Похожие" топового приложения? Android
Android Осуществить парсинг JSON с помощью готового макета "VKApiMessage"

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

Или воспользуйтесь поиском по форуму:
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
17.08.2015, 19:55  [ТС]     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" #20
Mikalai, огромное спасибо, что не бросили!!))))
правда return убрал, с ним не работало)
Yandex
Объявления
17.08.2015, 19:55     Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры"
Ответ Создать тему
Опции темы

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