После импорта картинки менюят свои ID

Интерфейс, диалоги, темы, стили, меню
Закрыто
Ghost_64rus
Сообщения: 5
Зарегистрирован: 08 окт 2013, 14:58

После импорта картинки менюят свои ID

Сообщение Ghost_64rus » 08 окт 2013, 15:16

Есть список объектов с картинками, храню этот список в БД, т.е. на OnCreate БД в поле "картинка" передаю ID ресурса нужной картинки.
Но потом при импорте новых изображений в R.drawable, уже не связанных со списком объектов, изменяются ID тех изображений которые я сохранял в БД, и поэтому в списке с адаптером SimpleCursorAdapte картинки меняются местами или вообще выдают ошибку.

Сначала хотел на открытие БД делать Update на поле "картинка", чтобы там всегда были актуальные ID. Но мне кажется это затратно по времени.

Думал хранить в БД не ID ресурсов, а их название в виде строки и потом через getIdentifier получать ID, но как это передать в адаптер, там же передается название поля из БД???

Подскажите, как можно решить проблему???

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

Re: После импорта картинки менюят свои ID

Сообщение Foenix » 08 окт 2013, 15:28

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

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

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: После импорта картинки менюят свои ID

Сообщение KamiSempai » 08 окт 2013, 15:49

Ghost_64rus писал(а):Подскажите, как можно решить проблему???
Хранить картинки в assets.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

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

Re: После импорта картинки менюят свои ID

Сообщение rezak90 » 08 окт 2013, 16:01

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

Ghost_64rus
Сообщения: 5
Зарегистрирован: 08 окт 2013, 14:58

Re: После импорта картинки менюят свои ID

Сообщение Ghost_64rus » 08 окт 2013, 17:57

прочитал про assets, я так понял для него R.java не генерирует ID,
и от туда можно вытащить картинки, указывая путь:

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

    	InputStream ims = getAssets().open("image.png");
    	Drawable d = Drawable.createFromStream(ims, null);
Тогда другой вопрос:
в БД я буду хранить путь к файлу в assets или InputStream этих файлов?
и что потом передавать в адаптер (например SimpleCursorTreeAdapter), чтобы в ExpandableListView все корректно отобразилось?

извиняюсь за тупые вопросы, только неделю андроид изучаю.

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

Re: После импорта картинки менюят свои ID

Сообщение Foenix » 08 окт 2013, 21:18

да нормальные у тебя вопросы!
в БД я буду хранить путь к файлу
так и надо делать, все правильно!
R.id.team

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

Ghost_64rus
Сообщения: 5
Зарегистрирован: 08 окт 2013, 14:58

Re: После импорта картинки менюят свои ID

Сообщение Ghost_64rus » 09 окт 2013, 13:11

залил картинку в assets
вот это работает:

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

InputStream ims = getAssets().open("image.png");
в БД храню путь к файлу в таком виде: "/assets/image.png"

теперь в SimpleCursorTreeAdapter передаю поле с путем к файлу
и картинка не появляется в списке.

что делаю не так?
нужно создавать свой класс наследника от SimpleCursorTreeAdapter и переопределять какой-то метод? ну вернее один метод уже переопределяется getChildrenCursor.

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

Re: После импорта картинки менюят свои ID

Сообщение rezak90 » 09 окт 2013, 15:00

Ghost_64rus писал(а):нужно создавать свой класс наследника от SimpleCursorTreeAdapter и переопределять какой-то метод?
да
R.id.team
Политика на форуме запрещена

Ghost_64rus
Сообщения: 5
Зарегистрирован: 08 окт 2013, 14:58

Re: После импорта картинки менюят свои ID

Сообщение Ghost_64rus » 09 окт 2013, 15:28

rezak90 писал(а): да
setViewImage ?

Ghost_64rus
Сообщения: 5
Зарегистрирован: 08 окт 2013, 14:58

Re: После импорта картинки менюят свои ID

Сообщение Ghost_64rus » 09 окт 2013, 15:44

получилось, всем спасибо!

если кому нужно вот код, этот метод переопределить в наследнике адаптера SimpleCursorTreeAdapter, рядом с переопределенным методом getChildrenCursor из урока 53:

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

@Override
	    protected void setViewImage (ImageView v, String value) {
	    	try {
	        	// получаем входной поток
	        	InputStream ims = getAssets().open(value);
	        	// загружаем как Drawable
	        	Drawable d = Drawable.createFromStream(ims, null);
	        	// выводим картинку в ImageView
	        	v.setImageDrawable(d);
	    	}
	    	catch(IOException ex) {
	    		return;
	    	}	
	    }

Закрыто