локальное Изображение через локальный json в android
У меня есть локальный json с некоторыми статическими данными, которые отображаются в listview.
каждый объект должен иметь изображение/логотип, который также отображается в ListView. Изображение будет локальным и в папке drawable.
данные / listview аналогичны этому http://wptrafficanalyzer.in/blog/android-itemclicklistener-for-a-listview-with-images-and-text/
в этом уроке все данные и изображения хранятся в массивах. Мои данные хранятся в формат JSON.
Итак, как мне "ссылаться" на изображение или имя изображения в JSON и как мне фактически получить доступ к изображению при создании listview?
1 ответов
давайте представим, что у вас есть некоторые изображения в вашем :
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);
    }
