如何将数据库中的图像加载到我的Android应用程序并将其放入listview中。数据库是MySQL,图像以png格式存储
这是我在数据库中检索数据的代码。 a_emblem是imageview和我的json文件中的图像
private void showResult() {
JSONObject jsonObject;
ArrayList<HashMap<String, String>> list = new ArrayList<>();
try {
jsonObject = new JSONObject(JSON_STRING);
JSONArray result = jsonObject.getJSONArray(Config.TAG_JSON_ARRAY1);
for (int i = 0; i < result.length(); i++) {
JSONObject jo = result.getJSONObject(i);
String a_shortcut = jo.getString(Config.TAG_a_shortcut);
String a_emblem = jo.getString(Config.TAG_a_emblem);
String gold = jo.getString(Config.TAG_gold);
String silver = jo.getString(Config.TAG_silver);
String bronze = jo.getString(Config.TAG_bronze);
String total = jo.getString(Config.TAG_total);
HashMap<String, String> match = new HashMap<>();
match.put(Config.TAG_a_shortcut, a_shortcut);
match.put(Config.TAG_a_emblem, a_emblem);
match.put(Config.TAG_gold, gold);
match.put(Config.TAG_silver, silver);
match.put(Config.TAG_bronze, bronze);
match.put(Config.TAG_total, total);
list.add(match);
}
} catch (JSONException e) {
e.printStackTrace();
}
ListAdapter adapter = new SimpleAdapter(
getActivity(), list, R.layout.standlayout,
new String[]{Config.TAG_a_shortcut, Config.TAG_a_emblem, Config.TAG_gold, Config.TAG_silver, Config.TAG_bronze, Config.TAG_total},
new int[]{R.id.shortcut, R.id.img, R.id.gold, R.id.silver, R.id.bronze, R.id.total});
lv.setAdapter(adapter);
}
答案 0 :(得分:0)
这是你可以做的。
将图片转换为位图。
将您的图片转换为base64字符串,并将此base64字符串保存在数据库中。
在适配器中使用base64字符串时将其转换回图像。
在ImageView中设置位图。
绝对应该有效。参考代码
将drawable转换为Bitmap
Bitmap icon = BitmapFactory.decodeResource(context.getResources(),
R.drawable.icon_resource);
使用以下方法将位图转换为字节数组:
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream .toByteArray();
从字节数组中编码base64字符串:
String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
将encoded
保存在数据库中。
将base64字符串转换回Bitmap
:
byte[] decodedString = Base64.decode(encoded , Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
将位图设置为图像视图:
imageView.setImageBitmap(bitmap);
答案 1 :(得分:0)