Страница 1 из 1
После импорта картинки менюят свои ID
Добавлено: 08 окт 2013, 15:16
Ghost_64rus
Есть список объектов с картинками, храню этот список в БД, т.е. на OnCreate БД в поле "картинка" передаю ID ресурса нужной картинки.
Но потом при импорте новых изображений в R.drawable, уже не связанных со списком объектов, изменяются ID тех изображений которые я сохранял в БД, и поэтому в списке с адаптером SimpleCursorAdapte картинки меняются местами или вообще выдают ошибку.
Сначала хотел на открытие БД делать Update на поле "картинка", чтобы там всегда были актуальные ID. Но мне кажется это затратно по времени.
Думал хранить в БД не ID ресурсов, а их название в виде строки и потом через getIdentifier получать ID, но как это передать в адаптер, там же передается название поля из БД???
Подскажите, как можно решить проблему???
Re: После импорта картинки менюят свои ID
Добавлено: 08 окт 2013, 15:28
Foenix
мне не понятно очень многое, хотя перечитала пару раз внимательно. Показывай все в кодах, структуру таблицы и конкретно что ты ам делаешь.
Re: После импорта картинки менюят свои ID
Добавлено: 08 окт 2013, 15:49
KamiSempai
Ghost_64rus писал(а):Подскажите, как можно решить проблему???
Хранить картинки в assets.
Re: После импорта картинки менюят свои ID
Добавлено: 08 окт 2013, 16:01
rezak90
та чего не понятного, он в бд записывает R.drawable.icon - их id с R файла что далеко не правильно =)
Re: После импорта картинки менюят свои ID
Добавлено: 08 окт 2013, 17:57
Ghost_64rus
прочитал про assets, я так понял для него R.java не генерирует ID,
и от туда можно вытащить картинки, указывая путь:
Код: Выделить всё
InputStream ims = getAssets().open("image.png");
Drawable d = Drawable.createFromStream(ims, null);
Тогда другой вопрос:
в БД я буду хранить путь к файлу в assets или InputStream этих файлов?
и что потом передавать в адаптер (например SimpleCursorTreeAdapter), чтобы в ExpandableListView все корректно отобразилось?
извиняюсь за тупые вопросы, только неделю андроид изучаю.
Re: После импорта картинки менюят свои ID
Добавлено: 08 окт 2013, 21:18
Foenix
да нормальные у тебя вопросы!
в БД я буду хранить путь к файлу
так и надо делать, все правильно!
Re: После импорта картинки менюят свои ID
Добавлено: 09 окт 2013, 13:11
Ghost_64rus
залил картинку в assets
вот это работает:
Код: Выделить всё
InputStream ims = getAssets().open("image.png");
в БД храню путь к файлу в таком виде: "/assets/image.png"
теперь в SimpleCursorTreeAdapter передаю поле с путем к файлу
и картинка не появляется в списке.
что делаю не так?
нужно создавать свой класс наследника от SimpleCursorTreeAdapter и переопределять какой-то метод? ну вернее один метод уже переопределяется getChildrenCursor.
Re: После импорта картинки менюят свои ID
Добавлено: 09 окт 2013, 15:00
rezak90
Ghost_64rus писал(а):нужно создавать свой класс наследника от SimpleCursorTreeAdapter и переопределять какой-то метод?
да
Re: После импорта картинки менюят свои ID
Добавлено: 09 окт 2013, 15:28
Ghost_64rus
rezak90 писал(а):
да
setViewImage ?
Re: После импорта картинки менюят свои ID
Добавлено: 09 окт 2013, 15:44
Ghost_64rus
получилось, всем спасибо!
если кому нужно вот код, этот метод переопределить в наследнике адаптера 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;
}
}