Привет, в моем проекте У меня есть панель поиска, в которой пользователь вводит имя животного, и мое приложение отобразит анимированную картинку этого животного (.gif). Im в настоящее время сохраняет пути изображения в моей базе данных SQLite. Есть два вопроса, которые у меня естьСохранение нескольких изображений в SQLite
a) Моя база данных в настоящее время содержит только 1 изображение, как я могу его расширить, мне нужно снова написать код для каждого файла изображения?
b) Как будет работать поиск? будет ли он искать изображение по имени или мне нужно сделать еще один столбец для тега изображения, а затем выполнить поиск по нему.
Вот мой код:
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ImageDatabase extends Activity{
private ImageView mImageView;
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mImageView = (ImageView) findViewById(R.id.image_view);
db = openOrCreateDatabase("Image.db", Context.MODE_PRIVATE, null);
db.execSQL("Create Table if not exists tb (a blob)");
}
public void saveImage(View view){
try {
FileInputStream fis = new FileInputStream("/storage/sdcard/gif_file.gif");
byte[] image = new byte[fis.available()];
fis.read(image);
ContentValues values = new ContentValues();
values.put("a", image);
db.insert("ImageTable", null, values);
fis.close();
}
catch (IOException e){
e.printStackTrace();
}
}
public void getImage(View view){
Cursor c = db.rawQuery("select = from tb", null);
if (c.moveToNext()){
byte[] image = c.getBlob(0);
Bitmap bmp = BitmapFactory.decodeByteArray(image, 0, image.length);
mImageView.setImageBitmap(bmp);
}
}
}
В настоящее время я планирую добавить 150 животных в мое приложение, пользователи не могут добавлять или удалять их, они просто могут их прочитать. Поэтому я думаю, что поиск по имени должен сделать это. Во-вторых, поэтому мой код должен выглядеть примерно так: FileInputStream fis = new FileInputStream («/ storage/sdcard/Images»), и внутри этой папки будут мои изображения, так что я смогу их прочесть так? – HeroicJokester
@HeroicJokester, вы должны предоставить более подробно об архитектуре вашего приложения: встраиваете ли вы изображения в приложение? Загружаете ли вы их из сети? Исходя из этих точек, лучший подход может измениться. – fasteque
Да, я подготовил все 150 гифов, и я хочу их добавить к моему приложению, сохраняя их во внутреннем или внешнем хранилище телефона. Пользователь не может редактировать или изменять их пользователя, просто будет искать имя животного, и мое приложение отобразит изображение с этим именем. Это все функционально там (PS im думает о добавлении голосового ввода тоже, но это для последующего). – HeroicJokester