я не могу показать изображение от рисования в моем приложении, используя JSON - PullRequest
0 голосов
/ 08 апреля 2020

Я сделал все правильно, чтобы прочитать мои json данные из ресурсов (рецепт. json), которые содержат

{"id": "1", "name": "الوصفة 1", " des c ":" الوصفة 1 "," image ":" R.drawable.image "} ...

Я правильно загрузил имя и дес c в recyclerView, но изображение не отображается с использованием getIdentifier () ... это мой код


     private void addItemsFromJSON() {
        try {

            String jsonDataString = readJSONDataFromFile();
            JSONObject jsonObject = new JSONObject(jsonDataString);
            JSONArray jsonArray=jsonObject.getJSONArray("recipes");



            for (int i=0; i<jsonArray.length(); ++i) {

                JSONObject itemObj = jsonArray.getJSONObject(i);

                String name = itemObj.getString("name");
                String desc = itemObj.getString("desc");
                String image = itemObj.getString("image");
                // get resource id by image name
                int resourceId =getResources().getIdentifier(image, "drawable",getPackageName());
                Recipe recipe = new Recipe(name, desc,resourceId);
                recipes.add(recipe);
            }

        } catch (JSONException | IOException e) {
            Log.d(TAG, "addItemsFromJSON: ", e);
        }
    }

показывает заголовок и описание, но изображение пусто

1 Ответ

0 голосов
/ 08 апреля 2020

Изменить имя изображения в JSON, например {"id": "1", "name": "image1", "des c": "Описание изображения", "image": "imageNameInTheDrawable"} Получить Drawable из ресурсов:

for (int i=0; i<jsonArray.length(); ++i) {

            JSONObject itemObj = jsonArray.getJSONObject(i);

            String name = itemObj.getString("name");
            String desc = itemObj.getString("desc");
            String imageName = itemObj.getString("image");
            // Get drawable by image name
         Drawable drawable = getResources().getDrawable(getResources()
              .getIdentifier(imageName, "drawable", getPackageName()));
            Recipe recipe = new Recipe(name, desc,drawable);
            recipes.add(recipe);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...