Я хочу отобразить список участников из файла 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;
}
}
Проблема: изображение не отображается в списке. Другая информация отображается хорошо, но изображение пустое. Может кто-нибудь, пожалуйста, помогите мне, если я где-нибудь ошибусь.




При добавлении изображения в список вы хотите добавить идентификатор для рисования, а не строку для рисования, то есть «@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()));
Это должен быть идентификатор, который я пытался показать, чтобы получить его из строки, если вы попробуете String memberimage = Integer.toString(getApplicationContext().getResources().getIdentifier("tojib:, "drawable", getApplicationContext().getPackageName())); , это сработает
Уважаемый Дэвид, показывает синтаксическую ошибку для параметра getIdentifier. Не могли бы вы проверить
Извините, никогда не закрывал кавычки String memberimage = Integer.toString(getApplicationContext().getResources().getIdentifier("tojib", "drawable", getApplicationContext().getPackageName()));
Отличный Давид!! Работает нормально, проблема решена. Я потратил пару дней на эту проблему. Теперь получил решение. Огромное спасибо за помощь.
Уважаемый Давид, Большое спасибо за ответ. К сожалению, проблема осталась прежней!! Не могли бы вы проверить файл JSON, если я правильно установил значение memberimage, оно должно быть @drawable/tojib или R.drawable.tojib . Я думаю, что где-то я делаю небольшую ошибку.