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

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

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

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

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

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

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

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

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

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

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

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

48
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
18.08.2015, 22:32 #41
Какие ид и куда сместились? я не очень понимаю. Хорошо поставленный вопрос это 50% ответа ))
1
RayPas
2 / 0 / 9
Регистрация: 18.01.2013
Сообщений: 370
18.08.2015, 22:38  [ТС] #42
Mikalai, исправил, если интересно, теперь все работает как надо, только с ID непонятна ситуация, беретсся из спинера...не пойму помешает ли мне это потом при выборке таблиц по условию или нет

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
27
28
29
   ContentValues cv = new ContentValues();
            ContentValues cv1 = new ContentValues();
 
            String spinnerPosition2 = spinner_author.getSelectedItem().toString();
            String spinnerPosition3 = spinner_list.getSelectedItem().toString();
           // String stringFromSpinner1 = LTRadapter.getItem(spinnerPosition1);
          //  String stringFromSpinner2 = LTRadapter.getItem(spinnerPosition2);
            Cursor cursor1 = db.rawQuery("select _id from " + DatabaseHelper.TABLE + " where "
                    + DatabaseHelper.COLUMN_LNAME + "=?", new String[]{spinnerPosition3});
            Cursor cursor2 = db.rawQuery("select _id from " + DatabaseHelper.TABLE2 + " where "
                    + DatabaseHelper.COLUMN_ASURNAME + "=?", new String[]{spinnerPosition2});
            int idFromDB1 = 0;
            int idFromDB2 = 0;
            if(cursor1.moveToFirst()) {
                idFromDB1 = cursor1.getInt(cursor1.getColumnIndex("_id"));
            }
            if(cursor2.moveToFirst()) {
                idFromDB2 = cursor2.getInt(cursor2.getColumnIndex("_id")); /////////  от тут поидее должен быть твой искомый ID
            }
            cv.put(DatabaseHelper.COLUMN_LID, idFromDB1);
            cv.put(DatabaseHelper.COLUMN_BNAME, bookBox.getText().toString());
            cv1.put(DatabaseHelper.COLUMN_BID, bookBox.getId());
            cv1.put(DatabaseHelper.COLUMN_AID, idFromDB2);
            final long id = getArguments() != null ? getArguments().getLong("id") : 0;
            if (id > 0) {
                db.update(DatabaseHelper.TABLE1, cv, DatabaseHelper.COLUMN_ID1 + "=" + String.valueOf(id), null);
            } else {
                db.insert(DatabaseHelper.TABLE1, null, cv);
                db.insert(DatabaseHelper.TABLE3, null, cv1);
Добавлено через 5 минут
Mikalai, ну к примеру в спиннере имеются такие значения
-актер1 [id = 1]
-актер2 [id =2]
-актер3 [id =3]
-актер4 [id =4]
если я удалю "актер3" то id актер4 станет = 3!!!!
потом ведь в базе будут дублирующие строки в поле ID...
0
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
18.08.2015, 22:53 #43
удалять/добавляь данные нужно не из/в spinner, а из/в базу и после этого заново заполнять новыми данными view-элементы. Примерно об этом говорит нам MVC-паттерн
0
RayPas
2 / 0 / 9
Регистрация: 18.01.2013
Сообщений: 370
18.08.2015, 23:01  [ТС] #44
Mikalai, согласен, но мы ведь их базы и заполняем
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
spinner_author = (Spinner) rootView.findViewById(R.id.spinner_authors);
            userCursor1 = db.rawQuery("select * from " + DatabaseHelper.TABLE2, null);
            List<String> headers1 = new ArrayList<>();
            if (userCursor1 != null) {
                if (userCursor1.moveToFirst()) {
                    do {
                        String string = userCursor1.getString(userCursor1.getColumnIndex(DatabaseHelper.COLUMN_ASURNAME));
                        headers1.add(string);
                    } while (userCursor1.moveToNext());
                }
            }
 
            ArrayAdapter<String> LTRadapter1 = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, headers1);
            LTRadapter1.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
            spinner_author.setAdapter(LTRadapter1);
0
Mikalai
18.08.2015, 23:05
  #45

Не по теме:

Ну вот и ладненько. Раз всё хорошо, то можно отдыхать )))

0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
19.08.2015, 07:18 #46
Берете курсор, суете в адаптер.
Удаляете актера из БД, [обновляете курсор], обновляете адаптер.
1
RayPas
2 / 0 / 9
Регистрация: 18.01.2013
Сообщений: 370
19.08.2015, 12:14  [ТС] #47
Rube, что интересно я даже еще не прописал удаление из этой таблицы))) а оно уже не робит(
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
19.08.2015, 22:53 #48
Код выклади, проверим чего там неправильно.
0
RayPas
2 / 0 / 9
Регистрация: 18.01.2013
Сообщений: 370
22.08.2015, 00:11  [ТС] #49
Rube, вроде исправил этот момент, теперь берет правильный id, но появилась новая трабл

Java
1
2
3
4
5
6
7
8
9
10
11
 cv.put(DatabaseHelper.COLUMN_LID, idFromDB1);
                cv.put(DatabaseHelper.COLUMN_BNAME, bookBox.getText().toString());
                cv1.put(DatabaseHelper.COLUMN_BID, bookBox.getId());
                cv1.put(DatabaseHelper.COLUMN_AID, idFromDB2);
 
                if (id > 0) {
                    db.update(DatabaseHelper.TABLE1, cv, DatabaseHelper.COLUMN_ID1 + "=" + String.valueOf(id), null);
                    db.update(DatabaseHelper.TABLE3, cv, DatabaseHelper.COLUMN_ID3 + "=" + String.valueOf(id), null);
                } else {
                    db.insert(DatabaseHelper.TABLE1, null, cv);
                    db.insert(DatabaseHelper.TABLE3, null, cv1);
на строке инсертов пишет что колонка COLUMN_AID не уникальна, добавление не происходит

Добавлено через 41 минуту
Rube, и это исправил, теперь пишет, что колонка эта же пустая! хотя при дебаге в ней лежит значение! вот тут я в отчаянии!
android.database.sqlite.SQLiteConstraintException: Actors.a_id may not be NULL (code 19)
0
22.08.2015, 00:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2015, 00:11
Привет! Вот еще темы с решениями:

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

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

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

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


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

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

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