Урок 136. CursorLoader
Re: Урок 136. CursorLoader
>>и что есть натуральный ключ?
имеется ввиду, что есть понятия ключей: естественный и суррогатный
иногда не имеет смысла создавать целочисленное поле "ID", когда есть текстовое поле "NAME", которое предполагается быть уникальным
имеется ввиду, что есть понятия ключей: естественный и суррогатный
иногда не имеет смысла создавать целочисленное поле "ID", когда есть текстовое поле "NAME", которое предполагается быть уникальным
Re: Урок 136. CursorLoader
Сейчас читаю статью http://www.casarini.org/blog/2009/andro ... id-column/
Re: Урок 136. CursorLoader
кошмар. это вы видимо никогда не работали с базами. У меня то опыт большой.
Тут же все просто . Уникальный ключ называешь _id, остальные - нормальной ссылкой на _id других таблиц в виде id_имятаблицы. В чем проблемы??
Никогда, никогда не называйте ключевые поля так, как вздумается, типа name. Это не аутентично, и другой разработчик, который будет разбираться в вашей бд вас проклянет.
это вообще вещь крайне специфическая! Когда у тебя бд, кторую ты создаешь сам, то нужно вводить искусственные ключи, а "натуральные" приходилось использовать только в крайних случаях, и то, из-за глупейшей системы полей в каких-нибудь идиотских базах данных какого-нибудь кладраAkella писал(а):>>и что есть натуральный ключ?
имеется ввиду, что есть понятия ключей: естественный и суррогатный
иногда не имеет смысла создавать целочисленное по"ле "ID", когда есть текстовое поле "NAME", которое предполагается быть уникальным
Тут же все просто . Уникальный ключ называешь _id, остальные - нормальной ссылкой на _id других таблиц в виде id_имятаблицы. В чем проблемы??
Никогда, никогда не называйте ключевые поля так, как вздумается, типа name. Это не аутентично, и другой разработчик, который будет разбираться в вашей бд вас проклянет.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 136. CursorLoader
зачем делать ключевым поле с именем продукта?? Если хотите уникальность - ну ставьте ему уникальный и все. В чем проблема??Akella писал(а):Натуральный ключ может быть основан не на целочисленном поле, а, например, на текстовом поле "product_name". С точки зрения объектной модели, глупо называть текстовое поле, где хранятся имена продуктов "_id". Правильнее, если оно будет называться именно "product_name". Так будет понятнее и разработчику, и тем, кто будет дорабатывать проект, как часто бывает. По имени поля сразу понятно, что там хранятся текстовые данные.
Придётся опять в запросе писать:
select product_name _id from products_table
даже если вы обзовете поле с ключевым полем имени продукта как _id андроид, боюсь, вас не поймет Не пробовала делать подобную чепуху, но думаю, что это так.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 136. CursorLoader
речь идет не просто о best practice в именовании некоторых объектов (ключей, переменных...) а о много большем и принципиальном..m090050 писал(а):Честно говоря я тоже соглашусь с ним. К чему жесткая привязка? Другое дело, что я не вижу в ней проблемы, но он...Foenix писал(а):я в шоке, что ты хочешь какое-то другое имя вместо этогоAkella писал(а):я в шоке от того, что я обязан в каждой таблице держать ключевое поле с именем "_id", а не с тем именем, которое я хочуПоясните пожалуйста что имеется ввиду. В чем проблема реализации составных ключей ДАЖЕ с жестким именем _id и что есть натуральный ключ? Первичный?и о составных ключах наверное не слышали
и о натуральных ключах тоже не слышали
ты мог бы себе представить таблицу, в которой первичным ключом были бы наименования чего-то, и соответственно, ссылочным полем на эту таблицу - было бы тоже текстовое поле, в котором были бы те же наименования?? я - нет.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 136. CursorLoader
>>Никогда, никогда не называйте ключевые поля так, как вздумается, типа name. Это не аутентично, и другой разработчик, который будет разбираться в вашей бд вас проклянет.
ну это не Вам решать, есть возможность и есть понятия естественных ключей, не зря же их сделали
но в любом случае, очень часто называют ключевые поля примерно так: id_region, id_product, id_user
у меня практика такая: называть: ID
Мне и в голову не могло никогда прийти, что кто станет меня ограничивать, бред да и только
ну это не Вам решать, есть возможность и есть понятия естественных ключей, не зря же их сделали
но в любом случае, очень часто называют ключевые поля примерно так: id_region, id_product, id_user
у меня практика такая: называть: ID
Мне и в голову не могло никогда прийти, что кто станет меня ограничивать, бред да и только
Re: Урок 136. CursorLoader
Посмотрите на статью Паоло, я ссылку выше дал. Обратите внимание накартинку, какие имена ключевых полей там? Посмотрите на комментарии. Много там комментариев на тему: "ты идиот, потому что так назвал ключевые поля"???!
Re: Урок 136. CursorLoader
ключевое слово я выделила.Akella писал(а):>>Никогда, никогда не называйте ключевые поля так, как вздумается, типа name. Это не аутентично, и другой разработчик, который будет разбираться в вашей бд вас проклянет.
ну это не Вам решать, есть возможность и есть понятия естественных ключей, не зря же их сделали
но в любом случае, очень часто называют ключевые поля примерно так: id_region, id_product, id_user
у меня практика такая: называть: ID
Мне и в голову не могло никогда прийти, что кто станет меня ограничивать, бред да и только
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 136. CursorLoader
кто такой этот Паоло, чтоб я читала его статью о том, что ему сложно назвать поле _id?Akella писал(а):Посмотрите на статью Паоло, я ссылку выше дал. Обратите внимание накартинку, какие имена ключевых полей там? Посмотрите на комментарии. Много там комментариев на тему: "ты идиот, потому что так назвал ключевые поля"???!
Что плохого в таблице, где ключевое поле названо _id, а остальные, ссылки на ключевые поля названы id_region? Не въеду. В первый раз сталкиваюсь с подобной ерундой.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 136. CursorLoader
Во первых имя _id - нигде не обязательное. Оно лишь гарантирует документированное поведение Adapter -ов и в частности CursorAdapter, хотя даже их вы можете использовать, если не вызываете явно или не явно методы запрашивающие _id.Akella писал(а):я в шоке от того, что я обязан в каждой таблице держать ключевое поле с именем "_id", а не с тем именем, которое я хочу
P.S. кодер отличается от программиста тем, что следует правилам, программист же эти правила создает. Возможности же инженера вообще безграничны... Когда вы используете Android Framework - вам рано задавать вопрос о том. что вы хотите делать не так. Да и структуры баз о которых вы говорили с более сложными _id в виде требования - излишни в мобильном устройстве на этом уровне. Когда же вы начнете ОСОЗНАННО выходить задачами за эти рамки, а не для поиграться никакой потребности в _id нет.
Re: Урок 136. CursorLoader
Во первых статья 2009 года, во вторых профиль автора - http://www.linkedin.com/in/casarini, не впечатлил, даже читать желания нет... у него вообще нет опыта Android developer, в предыдущем опыте нашел только J2EE и че?Akella писал(а):Сейчас читаю статью http://www.casarini.org/blog/2009/andro ... id-column/
Re: Урок 136. CursorLoader
а много там тех кто прочитал статью с 2009 года? или этот чувак кому -то интересен?Akella писал(а):Посмотрите на статью Паоло, я ссылку выше дал. Обратите внимание накартинку, какие имена ключевых полей там? Посмотрите на комментарии. Много там комментариев на тему: "ты идиот, потому что так назвал ключевые поля"???!
-
- Сообщения: 1
- Зарегистрирован: 11 янв 2014, 19:28
Re: Урок 136. CursorLoader
Подскажите пожалуйста как вставить картинки не из ресурсов а например просто из папки на флэшке.
Я понимаю что можно в БД в поле типа string хранить полный путь или просто имя файла, но не понимаю как и где преобразовывать его в картинку. Если можно фрагмент кода для примера.
Я понимаю что можно в БД в поле типа string хранить полный путь или просто имя файла, но не понимаю как и где преобразовывать его в картинку. Если можно фрагмент кода для примера.
Re: Урок 136. CursorLoader
Добрый день.
У SimpleCursorTreeAdapter нет метода swapCursor(). Что можно использовать вместо?
У SimpleCursorTreeAdapter нет метода swapCursor(). Что можно использовать вместо?
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 136. CursorLoader
У него есть для этого аж 2 метода, setGroupCursor и changeCursor.
После смены курсора старый курсор будет закрыт и его уже больше нельзя будет использовать.
Также, changeCursor, помимо всего прочего, закрывает все child курсоры.
После смены курсора старый курсор будет закрыт и его уже больше нельзя будет использовать.
Также, changeCursor, помимо всего прочего, закрывает все child курсоры.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 136. CursorLoader
Оба метода вызывают ошибку:У него есть для этого аж 2 метода, setGroupCursor и changeCursor.
После смены курсора старый курсор будет закрыт и его уже больше нельзя будет использовать.
Также, changeCursor, помимо всего прочего, закрывает все child курсоры.
Код: Выделить всё
01-16 17:29:47.557: D/AndroidRuntime(25007): Shutting down VM
01-16 17:29:47.557: W/dalvikvm(25007): threadid=1: thread exiting with uncaught exception (group=0x40f889a8)
01-16 17:29:47.562: E/AndroidRuntime(25007): FATAL EXCEPTION: main
01-16 17:29:47.562: E/AndroidRuntime(25007): java.lang.NullPointerException
01-16 17:29:47.562: E/AndroidRuntime(25007): at com.example.shops_db_adapter.MainActivity.onOptionsItemSelected(MainActivity.java:137)
01-16 17:29:47.562: E/AndroidRuntime(25007): at android.app.Activity.onMenuItemSelected(Activity.java:2566)
01-16 17:29:47.562: E/AndroidRuntime(25007): at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:372)
01-16 17:29:47.562: E/AndroidRuntime(25007): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:995)
01-16 17:29:47.562: E/AndroidRuntime(25007): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
01-16 17:29:47.562: E/AndroidRuntime(25007): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
01-16 17:29:47.562: E/AndroidRuntime(25007): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
01-16 17:29:47.562: E/AndroidRuntime(25007): at com.android.internal.view.menu.ListMenuPresenter.onItemClick(ListMenuPresenter.java:166)
01-16 17:29:47.562: E/AndroidRuntime(25007): at android.widget.AdapterView.performItemClick(AdapterView.java:298)
01-16 17:29:47.562: E/AndroidRuntime(25007): at android.widget.AbsListView.performItemClick(AbsListView.java:1128)
01-16 17:29:47.562: E/AndroidRuntime(25007): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2812)
01-16 17:29:47.562: E/AndroidRuntime(25007): at android.widget.AbsListView$1.run(AbsListView.java:3571)
01-16 17:29:47.562: E/AndroidRuntime(25007): at android.os.Handler.handleCallback(Handler.java:725)
01-16 17:29:47.562: E/AndroidRuntime(25007): at android.os.Handler.dispatchMessage(Handler.java:92)
01-16 17:29:47.562: E/AndroidRuntime(25007): at android.os.Looper.loop(Looper.java:153)
01-16 17:29:47.562: E/AndroidRuntime(25007): at android.app.ActivityThread.main(ActivityThread.java:5297)
01-16 17:29:47.562: E/AndroidRuntime(25007): at java.lang.reflect.Method.invokeNative(Native Method)
01-16 17:29:47.562: E/AndroidRuntime(25007): at java.lang.reflect.Method.invoke(Method.java:511)
01-16 17:29:47.562: E/AndroidRuntime(25007): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
01-16 17:29:47.562: E/AndroidRuntime(25007): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
01-16 17:29:47.562: E/AndroidRuntime(25007): at dalvik.system.NativeStart.main(Native Method)
Код: Выделить всё
cursor = db.getShopData();
...
SimpleCursorTreeAdapter sctAdapter = new MyAdapter(this, cursor,
android.R.layout.simple_expandable_list_item_1, groupFrom,
groupTo, android.R.layout.simple_list_item_1, childFrom, childTo);
...
Cursor c1 = null;
sctAdapter.setGroupCursor(db.SortShopData(c1));
Что я делаю не так?
Re: Урок 136. CursorLoader
Добрый день!
При создании лоадера
Могу я использовать этот курсор в своих целях (например, заполнить массив) ? Как к нему обратиться?
При создании лоадера
создается курсор с данными, которые помещаются в ListView.// создаем лоадер для чтения данных
getSupportLoaderManager().initLoader(0, null, this);
Могу я использовать этот курсор в своих целях (например, заполнить массив) ? Как к нему обратиться?
Re: Урок 136. CursorLoader
можно курсор использовать как угодно. ТАм есть метод (точно не помню) посмотри по-моему getCursor()
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 136. CursorLoader
Ошибку вызывает MainActivity в onOptionsItemSelected. В 137 строке обращение к null.GuryevAV писал(а):Оба метода вызывают ошибку:
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 136. CursorLoader
подозревал, что должно быть такFoenix писал(а):можно курсор использовать как угодно...
Не нашел.. А чей это метод? Где копать?Foenix писал(а):ТАм есть метод (точно не помню) посмотри по-моему getCursor()
PS Нашел у адаптера
Спасибо