Недавно я опубликовал сообщение о том, как отображать blob из базы данных sqlite, но не получил ответов. После более кропотливых часов :(Наконец-то я нашел ответ, который отображает blobs в представлении изображения, однако он отображает только последний blob в базе данных.Показать все изображения из базы данных sqlite
Есть что-то не так с моим запросом/контуром? Я совершенно неправильно?
класс активности, который отображает блобов
public class championsActivity extends Activity {
private Bitmap champions;
private myDBHelper db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_champions);
ImageView imageView = (ImageView)findViewById(R.id.champ_splash);
db= new myDBHelper(this);
champions = db.getChamp_splash();
imageView.setImageBitmap(champions);
}
@Override
protected void onDestroy() {
super.onDestroy();
db.close();
}
}
DBHelper класс
public class myDBHelper extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "champions.db";
private static final int DATABASE_VERSION = 2;
public myDBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
setForcedUpgrade();
}
public Bitmap getChamp_splash() {
Bitmap bitmap = null;
SQLiteDatabase db = getReadableDatabase();
db.beginTransaction();
String sqlTables = "Champions";
String selectQuery = "SELECT * FROM "+ sqlTables;
Cursor c = db.rawQuery(selectQuery, null);
if (c != null) {
while (c.moveToNext()) {
byte[] blob = c.getBlob(c.getColumnIndex("champ_splash"));
bitmap = BitmapFactory.decodeByteArray(blob, 0, blob.length);
}
}
db.setTransactionSuccessful();
db.endTransaction();
return bitmap;
}
}
EDIT
После прохождения над ответами я теперь добавил сгустки в массив, однако я до сих пор не может отображать их. Это мой текущий код
public ArrayList<Bitmap> getChamp_splash() {
Bitmap bitmap = null;
SQLiteDatabase db = getReadableDatabase();
db.beginTransaction();
String sqlTables = "Champions";
String selectQuery = "SELECT * FROM "+ sqlTables;
Cursor c = db.rawQuery(selectQuery, null);
ArrayList<Bitmap> bitmaps = new ArrayList<Bitmap>();
if (c != null) {
while (c.moveToNext()) {
byte[] blob = c.getBlob(c.getColumnIndex("champ_splash"));
bitmap = BitmapFactory.decodeByteArray(blob, 0, blob.length);
bitmaps.add(bitmap);
}
}
db.setTransactionSuccessful();
db.endTransaction();
return bitmaps;
}
public class championsActivity extends Activity {
private GridView gridView;
private Cursor champions;
private myDBHelper db;
private ArrayList<Bitmap> champ_splash;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_champions);
ImageView imageView = (ImageView)findViewById(R.id.champ_splash);
GridView gridView = (GridView)findViewById(R.id.champion_grid);
db= new myDBHelper(this);
champ_splash = db.getChamp_splash();
imageView.setImageBitmap(champ_splash);
champions = db.getChampions();
ListAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1,
champions,
new String[] {"Name"},
new int[] {android.R.id.text1});
gridView.setAdapter(adapter);
}
@miselkingThankyou для вашего ввода, я следил за вашим ответом и реализовал то, что могу, но есть ошибка. Линия imageGridview.setAdapter (адаптер); в деятельности чемпионов. Есть ли способ показать их с помощью массива, но не использовать пользовательский адаптер? как можно проще – Calv
Возьмите его, вы ушли :(im пытается отобразить массив растровых изображений в моем изображении. – Calv
Извините, меня не было вокруг, хм, ImageView может показывать только одно изображение. Таким образом, лучший способ показать изображения для использования адаптера (в моем случае «ImageGridViewAdapter». Да, переменная 'imageGridview' имеет тип« GridView », так же, как вы использовали ее в своем edit.As для обновленного вопроса проблема заключается в том, что' simple_list_item_1' не может отображать изображения , потому что он содержит только «TextView» в своем xml (вы можете найти больше о макетах по умолчанию и как они реализованы [здесь] (https://github.com/android/platform_frameworks_base/tree/master/core/res/res/компоновки). Итак, что вам нужно сделать, это использовать пользовательский адаптер. – miselking