Показать изображение в ListView из файла JSON в Android Studio

Я хочу отобразить список участников из файла JSON. Информация об участнике, такая как имя, местоположение, контактный номер, изображение и т. д. Вся информация отображается нормально, но изображение участника не отображается. Здесь дан необходимый файл и кодировка для вашей проверки.

JSON-файл

{"names":[
  {
    "serialno":"1. ",
    "memberimage":"@drawable/tojib",
    "membername":"শেখ তজিবুল ইসলাম",
    "farmacyname":"Farmacy1",
    "mobileno":"01942717067",
    "address":"Digholia, Lohagara, Narial"
  },
  {
    "serialno":"2. ",
    "memberimage":"@drawable/tojib",
    "membername":"শেখ তজিবুল ইসলাম",
    "farmacyname":"Farmacy2",
    "mobileno":"01823987654",
    "address":"Kumri, Lohagara, Narial"
  },
  {
    "serialno":"3. ",
    "memberimage":"@drawable/tojib",
    "membername":"শেখ তজিবুল ইসলাম",
    "farmacyname":"Farmacy3",
    "mobileno":"01782345678",
    "address":"Baira, Lohagara, Narial"
  },
  {
    "serialno":"4. ",
    "memberimage":"@drawable/tojib",
    "membername":"শেখ তজিবুল ইসলাম",
    "farmacyname":"Farmacy4",
    "mobileno":"01943876543",
    "address":"Lutia, Lohagara, Narial"
  }
]
}

MainActivity.java

public class MainActivity extends AppCompatActivity {

    Toolbar toolbar;
    ListView listview;    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        toolbar = findViewById(R.id.toolBarId);
        setSupportActionBar(toolbar);
       
        listview=findViewById(R.id.listViewId);

       try {
           JSONObject jsonObject=new JSONObject(loadJsonFile());
           JSONArray jsonArray=jsonObject.getJSONArray("names");
           HashMap<String,String> listItem;           
           ArrayList<HashMap<String,String>> listItems=new ArrayList<>();           
           for(int i=0; i<jsonArray.length();i++)
            {
                JSONObject obj=jsonArray.getJSONObject(i);
                String serialno=obj.getString("serialno");
                String memberimage=obj.getString("memberimage");
                String farmacyname=obj.getString("farmacyname");
                String membername=obj.getString("membername");
                String mobileno=obj.getString("mobileno");
                String address=obj.getString("address");

                listItem=new HashMap<>();
                listItem.put("serialno",serialno);
                listItem.put("memberimage",memberimage);                
                listItem.put("farmacyname",farmacyname);
                listItem.put("membername",membername);
                listItem.put("mobileno",mobileno);
                listItem.put("address",address);
                listItems.add(listItem);                

            }

            ListAdapter adapter=new SimpleAdapter(this,listItems,R.layout.main_list_item_layout,
                    new String[]{"serialno","memberimage","membername","farmacyname","mobileno","address"},
                    new int[]{R.id.serialTextViewId,R.id.imageViewId,R.id.nameTextViewId,
                            R.id.shopNameTextViewId,R.id.mobileNoTextViewId,R.id.addressTextViewId});

            listview.setAdapter(adapter);

        } catch (JSONException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public String loadJsonFile() throws IOException {
        String json=null;
        InputStream inputStream=this.getAssets().open("member.json");
        int size=inputStream.available();
        byte[] byteArray=new byte[size];
        inputStream.read(byteArray);
        inputStream.close();
        json=new String(byteArray, "UTF-8");
        return json;
    }
}

Проблема: изображение не отображается в списке. Другая информация отображается хорошо, но изображение пустое. Может кто-нибудь, пожалуйста, помогите мне, если я где-нибудь ошибусь.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
164
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

При добавлении изображения в список вы хотите добавить идентификатор для рисования, а не строку для рисования, то есть «@drawable/to job», как показано ниже:

String memberImageDrawable = obj.getString("memberimage");
memberImageDrawable = memberImageDrawable.substring(memberImageDrawable.indexOf("/")); //extract the String after @drawable/
String memberimage = Integer.toString(getApplicationContext().getResources().getIdentifier(memberImageDrawable, "drawable", getApplicationContext().getPackageName()));

Уважаемый Давид, Большое спасибо за ответ. К сожалению, проблема осталась прежней!! Не могли бы вы проверить файл JSON, если я правильно установил значение memberimage, оно должно быть @drawable/tojib или R.drawable.tojib . Я думаю, что где-то я делаю небольшую ошибку.

Tojibul Islam 25.12.2020 03:33

Это должен быть идентификатор, который я пытался показать, чтобы получить его из строки, если вы попробуете String memberimage = Integer.toString(getApplicationContext().getResources().getI‌​dentifier("tojib:, "drawable", getApplicationContext().getPackageName())); , это сработает

David Kroukamp 25.12.2020 07:21

Уважаемый Дэвид, показывает синтаксическую ошибку для параметра getIdentifier. Не могли бы вы проверить

Tojibul Islam 25.12.2020 09:52

Извините, никогда не закрывал кавычки String memberimage = Integer.toString(getApplicationContext().getResources().getI‌​dentifier("tojib", "drawable", getApplicationContext().getPackageName()));

David Kroukamp 25.12.2020 09:58

Отличный Давид!! Работает нормально, проблема решена. Я потратил пару дней на эту проблему. Теперь получил решение. Огромное спасибо за помощь.

Tojibul Islam 25.12.2020 12:30

Другие вопросы по теме