【问题标题】:Show image in ListView from JSON file in Android Studio从 Android Studio 中的 JSON 文件在 ListView 中显示图像
【发布时间】:2021-04-03 02:48:38
【问题描述】:

我想显示 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;
    }
}

问题:图像未显示在列表中。其他信息显示良好,但图像为空白。如果我在任何地方出错,任何人都可以帮助我。

【问题讨论】:

    标签: java android json listview


    【解决方案1】:

    将图像添加到列表时,您要添加drawble id而不是可绘制字符串,即“@drawable/tojib”,如下所示:

    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()));
    

    【讨论】:

    • 亲爱的大卫,非常感谢您的回答。不幸的是,问题仍然存在!如果我正确设置 memberimage 的值,请检查 JSON 文件,它应该是 @drawable/tojibR.drawable.tojib 。我认为我在某个地方犯了一个小错误。
    • 它应该是可绘制的 ID,我试图展示一个从字符串中获取它的解决方案,如果你尝试 String memberimage = Integer.toString(getApplicationContext().getResources().getIdentifier("tojib:, "drawable", getApplicationContext().getPackageName())); 是否有效
    • 亲爱的 David,显示 getIdentifier 参数的语法错误。你能检查一下吗
    • 抱歉没有关闭引号String memberimage = Integer.toString(getApplicationContext().getResources().getIdentifier("tojib", "drawable", getApplicationContext().getPackageName()));
    • 优秀的大卫!!它工作正常,问题已解决。我为这个问题度过了几天。现在得到了解决方案。非常感谢您的帮助。
    猜你喜欢
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 2015-10-03
    • 1970-01-01
    相关资源
    最近更新 更多