Локальное изображение через локальный json в android

У меня есть локальный json с некоторыми статическими данными, которые отображаются в списке.

Каждый объект должен иметь изображение/логотип, который также отображается в списке. Изображение будет локальным и в выпадающей папке.

Данные/listview аналогичны этому http://wptrafficanalyzer.in/blog/android-itemclicklistener-for-a-listview-with-images-and-text/

В этом руководстве все данные и изображения хранятся в массивах. Мои данные хранятся в JSON.

Итак, как мне "ссылаться" на изображение или имя изображения в JSON и как я действительно получаю доступ к изображению при создании списка?

1 ответ

Предположим, что у вас есть несколько изображений в папке drawable:

drawable
 image_name_1
 image_name_2
 image_name_3
 image_name_4
 ...

Поместите имя изображения в json:

[
 {
 "some_field_1": "some_value_1",
 "some_field_2": "some_value_2",
 "some_field_3": "some_value_3",
 ...
 "image_name": "image_name_1"
 },
 {
 "some_field_1": "some_value_1",
 "some_field_2": "some_value_2",
 "some_field_3": "some_value_3",
 ...
 "image_name": "image_name_2"
 },
 {
 "some_field_1": "some_value_1",
 "some_field_2": "some_value_2",
 "some_field_3": "some_value_3",
 ...
 "image_name": "image_name_3"
 },
 ...
]

Получить имя от JSON и загрузить ресурс drawab:

JSONArray data; // your JSON
 Context context; // context
 Resources resources = context.getResources();
 for (int i = 0; i < data.length(); i++) {
 // getting some another JSON field
 // get image name from JSON
 String imageName = data.getJSONObject(i).getString("image_name");
 // get resource id by image name
 final int resourceId = resources.getIdentifier(imageName, "drawable", context.getPackageName());
 // get drawable by resource id
 Drawable drawable = resources.getDrawable(resourceId);
 // get bitmap by resource id
 Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), resourceId);
 }

Обновление

Поместите идентификатор ресурса изображения в HashMap

...
 List<hashmap<string,string>> aList = new ArrayList<hashmap<string,string>>();
 JSONArray data; // your JSON
 Context context; // context
 Resources resources = context.getResources();
 for (int i = 0; i < data.length(); i++) {
 HashMap<string, string=""> hm = new HashMap<string,string>();
 hm.put("txt", "Country : " + countries[i]);
 hm.put("cur","Currency : " + currency[i]);
 // get image name from JSON
 String imageName = data.getJSONObject(i).getString("image_name");
 // get resource id by image name
 final int resourceId = resources.getIdentifier(imageName, "drawable", context.getPackageName());
 hm.put("flag", Integer.toString(resourceId) );
 aList.add(hm);
 }
</string,string></string,></hashmap<string,string></hashmap<string,string>

licensed under cc by-sa 3.0 with attribution.