Урок 52. SimpleCursorAdapter, пример использования

Обсуждение уроков
Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Serious » 20 мар 2013, 10:17

Olivka писал(а):Примеров в сети полно. Сделай как тут http://www.mysamplecode.com/2012/07/and ... qlite.html
Дак а разве есть разница ? В этом примере же тоже из основной активности с базой работают.
Скопировал в свой проект. Ошибка осталась та же.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение rezak90 » 20 мар 2013, 10:39

у меня закончилась кофейная гуща, пока не скинете весь проект дела не будет
R.id.team
Политика на форуме запрещена

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Serious » 20 мар 2013, 10:45

rezak90 писал(а):у меня закончилась кофейная гуща, пока не скинете весь проект дела не будет
я скинул проект. пару сообщений назад. Там ссылка на проект.
Выкладываю проект.
http://zalil.ru/34363954

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение rezak90 » 20 мар 2013, 11:28

скачал, запустил, посмеялся))) ладно тута работы накинули, если всё хорошо то через пару часиков отпишу в чём проблема хД)
R.id.team
Политика на форуме запрещена

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Serious » 20 мар 2013, 12:05

rezak90 писал(а):скачал, запустил, посмеялся))) ладно тута работы накинули, если всё хорошо то через пару часиков отпишу в чём проблема хД)

Что же там такого смешного ? :)

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Foenix » 20 мар 2013, 13:42

Прочитайте еще раз уроки с самого начала, в особенности про активити, разберитесь во всем и сделайте все заново. Там не только с базами у вас каша, но и вообще. Даже если мы тут исправим ошибки, вы вряд ли поймете. Я сама по урокам училась поначалу, но такого не писала. Видимо, вы поверхностно все поняли.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение rezak90 » 20 мар 2013, 14:15

в общем добрался я довас))
вы с текущего активити инициализируете (но не запускаете) второе активити в котором и создаётся ваш бдхелпер в который передаётся контекст второго активити который равен нуллу, а равен он нуллу потому что активити нету в данном контексте... как сказали выше, там у вас каша =)
R.id.team
Политика на форуме запрещена

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Foenix » 20 мар 2013, 16:19

rezak90 писал(а):в общем добрался я довас))
вы с текущего активити инициализируете (но не запускаете) второе активити в котором и создаётся ваш бдхелпер в который передаётся контекст второго активити который равен нуллу, а равен он нуллу потому что активити нету в данном контексте... как сказали выше, там у вас каша =)
ПОэтому я и сказала, что нужно читать про активити с самого начала, т.к. вряд ли человек поймет что ты тут написал. Там и в DB.java ошибки есть..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение rezak90 » 20 мар 2013, 16:21

я в дб не смотрел, сразу видно что там каша, просто отдебажил и нашёл ошибку
R.id.team
Политика на форуме запрещена

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Foenix » 20 мар 2013, 17:04

я пыталась разобраться, но у меня так мозги не заворачиваются, чтоб понять логику))
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение rezak90 » 20 мар 2013, 17:11

ладно хватит на человека уже гнать, а то пропадёт желание что либо делать =)
в общем всё нормально, просто нужно больше стараться, не всё сразу.
R.id.team
Политика на форуме запрещена

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Serious » 20 мар 2013, 20:27

Спасибо вам за помощь. Разобрался.

Но штука в том что этот класс DataModel я не хотел делать Activity. Надо сделать чтоб он просто работал с базой, ну и еще там много чего))) в нем.
В уроке у вас написано чтобы работать с базой надо чтобы класс был наследником Activity.

Вопрос. Можно ли работать с базой не из Activity?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение rezak90 » 20 мар 2013, 21:20

конечно можно, просто ей нужен контекст, а контекст можно получить только с активити
R.id.team
Политика на форуме запрещена

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Foenix » 20 мар 2013, 22:23

Я тебе ссылку давала на пример, посмотри как там сделано ведь..
есть класс адаптера, где по базе все собрано, вот так делается его конструктор - куда передается контекст, о котором говорилось выше

public CountriesDbAdapter(Context ctx) {
this.mCtx = ctx;
}
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

jBee
Сообщения: 41
Зарегистрирован: 03 апр 2013, 16:24

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение jBee » 03 апр 2013, 21:39

Подскажите - можно ли при выборке записи из базы в список, на экране значения некоторых полей заменять по условию другими значениями? Например в таблице данные:

Имя|Флаг
Петя|1
Вася|0
Лена|1

Но на экран в список надо выводить значение поля Имя без изменений, а поле Флаг выводить как "Да" если значение Флаг=1 и "Нет" если 0.
Как реализовать такую условную замену данных при выводе данных из базы на экран в ListView?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Foenix » 03 апр 2013, 22:58

Можно по-разному. Например, создать запрос (и получить курсор), в котором данные значения уже будут стоять автоматически "да" и "нет" в зависимости от условия в поле.
а можно создать свой адаптер, переопределить в нем метод bindView..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение neoksi » 04 апр 2013, 02:56

Olivka писал(а):Ошибка простая, еще раз повторяю, нужно перед datamodel.init(); написать создание переменной datamodel. Нуллпоинтер вылетает тогда, когда ты обращаешься к экземпляру класса, его методу, не созав экземпляр. Такое можно делать только со статическими методами.
Я лично в последние время пристрастился писать так:

Код: Выделить всё

if(datamodel!=null) datamodel.init();
Это привычка появилась при использовании фрагментов, так как разные шаблоны используются для разных случаев.

jBee
Сообщения: 41
Зарегистрирован: 03 апр 2013, 16:24

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение jBee » 04 апр 2013, 19:16

Olivka писал(а):Можно по-разному. Например, создать запрос (и получить курсор), в котором данные значения уже будут стоять автоматически "да" и "нет" в зависимости от условия в поле.
а можно создать свой адаптер, переопределить в нем метод bindView..
Про запрос я тоже думал, в других базах например есть синтаксис select case позволяющий выводить свои значения в выборке в зависимости от условий. Но в sqlite я такого не нашел.
Создать свой адаптер и переопределить bindView - а можно привести пример?

Еще есть идея - а не позволяют ли визуальные компоненты проверять условие (непосредственно в описании layout) и выводить свои данные?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Foenix » 04 апр 2013, 19:45

пример приводить не буду, объясню :)
в биндвью есть параметр - курсор. Берешь этот курсор и делай с ним (со строкой) что хочешь, например

Код: Выделить всё

String sDocNom = "№ "+cursor.getString(cursor.getColumnIndex("doc_num"))+" от "+sDocDate1;
это у меня формируется номер документа в читаемый вид.
А ты пиши if.. и так далее.
и потом

Код: Выделить всё

TextView tvDocNum = (TextView) view.findViewById(R.id.tvDocNum);
tvDocNum.setText(sDocNom);
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

jBee
Сообщения: 41
Зарегистрирован: 03 апр 2013, 16:24

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение jBee » 04 апр 2013, 21:27

То что вы написали вполне понятно, когда используется для визуальных компонентов не входящих в список. Но у меня задача - чтобы замена данных происходила в элементах списка. И вот тут уже непонятно как делать.

Вот как работает сейчас:

Код: Выделить всё

...
		Cursor cursor = dbHelper.fetchAllNames();

		// The desired columns to be bound
		String[] columns = new String[] {
				DbAdapter.KEY_name,
				DbAdapter.KEY_flag
		};

		// the XML defined views which the data will be bound to
		int[] to = new int[] { R.id.name, R.id.flag };

		// create the adapter using the cursor pointing to the desired data
		// as well as the layout information
		dataAdapter = new SimpleCursorAdapter(this, R.layout.names_info,
				cursor, columns, to, 0);

		ListView listView = (ListView) findViewById(R.id.listView1);
		// Assign adapter to ListView
		listView.setAdapter(dataAdapter);
...
Пока не понимаю как мне сделать так, чтобы вместо значений flag (0 или 1) выводились "Да" или "Нет".

Ответить