Страница 1 из 1

Как созранить обьект, у окторого есть картинка ?

Добавлено: 22 фев 2013, 01:53
Elek
Добрый день, хочу попросить совета .
Хочу сохранить обьект, который описывал бы фильм.
У которого было бы, например поле для хранения названия, описания и картинка-постер самого фильма.
Как правильно это сделать ?

Как записать такой обьект в базу данных ?
Где лучше хранить картинку в базе данных или в файловой системе ?
Если в файловой системе, то как связывать её и родительский обьект ?
Может хранить ссылку на картинку в базе данных ?

В общем прошу наставить на путь истинный и обьяснить куда копать, спасибо :).

Re: Как созранить обьект, у окторого есть картинка ?

Добавлено: 22 фев 2013, 05:06
neoksi
Elek писал(а):Как записать такой обьект в базу данных ?
Разбиваешь такой объект на элементы, к примеру:
1) _id записи;
2) Название фильма;
3) Описание фильма;
4) Рейтинг;
5) id картинки в файловой системе;
6) и т.д.
И создаешь таблицу с нужными полями.
Elek писал(а):Где лучше хранить картинку в базе данных или в файловой системе ?
Картинку можно хранить как BLOB данные в БД, но не советую, если к ним неправильно обратиться, повесишь все. Идеальным вариантом считается сохранять картинку в ФС, а в БД хранить ссылку на картинку.
Elek писал(а):Если в файловой системе, то как связывать её и родительский объект ?
В БД хранишь ссылку на картинку в соответствующей записи, формат ссылки уже на твоё усмотрение, это может быть как имя фйла, так и полный URI путь к файлу. Подстановка делается уже в адаптере, подготавливающем данные для отображения в приложении.
Elek писал(а):Может хранить ссылку на картинку в базе данных ?
Это самый верный путь.
Elek писал(а):В общем прошу наставить на путь истинный и обьяснить куда копать, спасибо :).
Наставляю, иди и больше не греши ;)

Re: Как созранить обьект, у окторого есть картинка ?

Добавлено: 24 фев 2013, 00:20
Elek
neoksi
Спасибо за развернутый ответ.

Еще два вопроса насчет хранения картинок:
Куда их лучше складировать?
Есть папка assets и res. Я положил несколько штук в папку res/drawable, для тестов.
Если захочу добавлять картинки в runtime, нужно складировать в папке assets ?
Ну и второй вопрос, как работает uri в андроиде, как правильно записывать руть к файлу ?

Заранее благодарен :).

Re: Как созранить обьект, у окторого есть картинка ?

Добавлено: 03 мар 2013, 16:38
Elek
В общем сделал обьект, который хранит фильм:

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

public class Movie {
	
	public long _id;
	public String subject;
	public String body;
	public String pictureUrlString;
	@Override
	public String toString() {
		return "Movie [_id=" + _id + ", subject=" + subject + ", body=" + body
				+ ", pictureUrlString=" + pictureUrlString + "]";
	}	
}
String pictureUrlString хранит путь к имени файла в папке assets, открываю его вот так :

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

private Drawable getDrawableFromAsset(String fileName) {
		Drawable drawable = null;
		try {
			// Open Input Stream for required file, from asset folder
			InputStream inputStream = getAssets().open(fileName);
			// Create Drawable from InputStream
			drawable = Drawable.createFromStream(inputStream, null);
		} catch (Exception e) {
			Log.e(MainActivity.MOVIES_ADAPTER_TAG, "Error: " + e.getMessage());
		}
		return drawable;
	}
Вопрос, как пользователь может добавлять свои картинки в папку assets ?
То есть, если он захочет поменять имеющуюся картинку или добавить новый фильм ?
Как, например, добавить файл в папку assets ?

Или я что-то не понял и так делать нельзя ?
И если ответ положительный, то как надо делать :)?

Спасибо.

Re: Как созранить обьект, у окторого есть картинка ?

Добавлено: 03 мар 2013, 21:16
rezak90
с асета вы только тяните данные которые ещё заложили в проекте... сделайте темповую папку и там храните свои картинки