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

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

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

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

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

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

то есть задача прикрепить определенный фильм к определенному режиссеру и жанру
знаю, что вместо дропдауна тут используется Spinner кажется, но как осуществить все остальное не в курсе, знаю как это делается в asp.net , а тут полный ноль, подскажите идейки, главная трабл, что не представляю как выбрать списки жанров и режиссеров из таблиц
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2015, 22:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" (Программирование Android):

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log"
Unknown method 'e' of 'org.apache.commons.logging.Log' package...

Постепенно вывести на экран слово "Java", в котором буквы состоят из "интересных" элементов
Я учусь в универе и вот пытаюсь делать лабораторные по языку java, только на...

Выбор платформы разработки "1С Мобильная платформа" или "Android Studio"
Всем, здравствуйте! Есть задача по разработке клиента для терминала сбора...

При эмулировании вместо надписи "Hello world" отображается "android"
Привет форумчане! Я только-только начинал программировать на андроиде. Поставил...

Как "превратить" string "6.971245e-001" во float?
Число конечно пример

Как прикрутить "свой браузер" к странице - "фрагмент"
здравствуйте. все, уже голову сломал. не соображаю совсем. не получается...

48
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
17.08.2015, 00:35 #2
http://startandroid.ru/ru/uroki/vse-...juschij-spisok
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
17.08.2015, 10:36 #3
Присваиваешь каждому итему свой id, столбцы таблиц будут в виде:
id_N - Название - id_R - id_G
id_R - Режиссер
id_G - Жанр
Выбираешь фильму, режиссера и жанр, кликаешь ОК - выполняется sql - UPDATE [таблица] SET... WHERE id_N =... .
0
RayPas
2 / 0 / 9
Регистрация: 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);
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
17.08.2015, 16:04 #5
Лучший ответ Сообщение было отмечено RayPas как решение

Решение

headers циклом по записям курсора надо заполнить значениями
1
RayPas
2 / 0 / 9
Регистрация: 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)
0
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
17.08.2015, 18:07 #7
Вместо
Java
1
String[] headers = new String[]{DatabaseHelper.COLUMN_LNAME};
напиши
Java
1
String[] headers = new String[userCursor.getCount()];
0
RayPas
2 / 0 / 9
Регистрация: 18.01.2013
Сообщений: 370
17.08.2015, 18:12  [ТС] #8
Mikalai, Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3
такая ошибка в теле цикле теперь

Добавлено через 2 минуты
Mikalai, и каким образом я сообщу какие именно столбцы мне нужны
0
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
17.08.2015, 18:30 #9
Массив headers будет отображаться в твоём spinner. В цикле тебе нужно достать из курсора нужные элементы и вставить в массив, как я понял.
0
RayPas
2 / 0 / 9
Регистрация: 18.01.2013
Сообщений: 370
17.08.2015, 18:34  [ТС] #10
Mikalai, цикл один раз выполняется и вылетает с ошибкой, хотя в соunt правильно считает элементы
0
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
17.08.2015, 18:44 #11
покажи весь код, ошибку и сроку пометь где она появляется
0
RayPas
2 / 0 / 9
Регистрация: 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)
0
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
17.08.2015, 19:08 #13
ты же создаешь массив без элементов, а обращаться пытаешься к его элементу с индексом 0.
0
RayPas
2 / 0 / 9
Регистрация: 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);
ошибка та же на той же строке
0
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
17.08.2015, 19:17 #15
ошибка та же, но пишет там наверное - java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

Объясни нормально, что ты хочешь достать из базы и засунуть в спинер? это строки или числа? Как называется КОЛОНКА из которой ты хочешь достать информацию.
0
RayPas
2 / 0 / 9
Регистрация: 18.01.2013
Сообщений: 370
17.08.2015, 19:21  [ТС] #16
Mikalai, я хочу достать значения из таблицы TABLE столбца COLUMN_LNAME, это строки.
0
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
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));
        }
0
RayPas
2 / 0 / 9
Регистрация: 18.01.2013
Сообщений: 370
17.08.2015, 19:32  [ТС] #18
Mikalai,сдвиги есть, но пишет такую ошибку
Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 4

на теле цикла выкидывает опять
0
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
17.08.2015, 19:39 #19
Лучший ответ Сообщение было отмечено RayPas как решение

Решение

Я уже сам не соображаю какую чушь пишу )))
Вот так примерно нужно:

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);
1
RayPas
2 / 0 / 9
Регистрация: 18.01.2013
Сообщений: 370
17.08.2015, 19:55  [ТС] #20
Mikalai, огромное спасибо, что не бросили!!))))
правда return убрал, с ним не работало)
0
17.08.2015, 19:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2015, 19:55
Привет! Вот еще темы с решениями:

Что означают конструкции "finally" и "throw new"?
Я с Java уже давно, но с этим столкнулся в первый раз. Объясните, пожалуйста,...

блокирование кнопок "Home" "Back"
Доброго времени. собственно вопрос сл. можно ли заблокировать или каким либо...

Ошибка "Gradle"MyApplication" projectrefresh failed
Всем доброго вечера. Только начинаю писать под андроид, и на одном из первых...

Наилучший способ хранения "таблиц в таблицах"
Не знал, как правильней назвать тему, вышло так:) На тему нижеописанного...


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

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

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