【问题标题】:Populate JSON data to ListView将 JSON 数据填充到 ListView
【发布时间】:2016-12-18 06:54:20
【问题描述】:

我试图在 Volley 的帮助下显示从 MySQL 数据库中检索到的数据,并将其填充到 ListView 中。 到目前为止,我尝试了所有方法,但我无法做到。

JsonArrayRequest req = new JsonArrayRequest(urlJsonArry, new Response.Listener<JSONArray>() {
    @Override
    public void onResponse(JSONArray response) {
        Log.d("TAG", response.toString());

        try {
            ArrayList<HashMap<String, String>> authorList = new ArrayList<>();
            for (int i = 0; i < response.length(); i++) {
                JSONObject obj = (JSONObject) response.get(i);
                String username      = obj.getString("username");
                String email         = obj.getString("email");
                String password      = obj.getString("password");

                usernameAll += "UserName: " + username + "\n\n";
                emailAll    += "Email: "    + email + "\n\n";
                passwordAll += "Password: " + password + "\n\n";                      
        }

由于我已检索到 'username'、'email' 和 'password' 我可以通过 TextView 成功显示它myTextView.setText(usernameAll + " " + ..);。但现在我只想在Simple ListView中打印/填充“用户名”

HashMap<String, String> myData = new HashMap<>();
myData.put("justKey", usernameAll);
adapter1 = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, android.R.id.text1, myData);
listView.setAdapter(adapter1);

当我拿一些Array 并调用该数组时,它可以工作,但为什么myData 不工作。你能帮我理解实际的问题吗? 我的下一步将是使用Custom ListView,但现在我渴望“实际工作原理

如果您能纠正我解决此问题的方法,我将不胜感激。

谢谢。

PS:我从 Android Studio 2.1.2 收到此错误:

无法解析构造函数 'ArrayAdapter(android.content.Context, int, int, java.lang.String)'

【问题讨论】:

  • 您的列表视图适配器代码是什么?老实说,从自定义列表视图开始最容易,在这种情况下学习它的最好方法比通用,直接跳进去。当你说 myData 不起作用时,你是什么意思? usernameAll 是否返回为空?为什么不创建一个保存用户名、电子邮件和密码的用户对象,并将它们存储在数据结构中,当您在列表视图中显示它们时会更容易显示它们。
  • 你好@Steeno!谢谢你的cmets。好吧,我被困住了,我不知道该怎么办。其实这是我第一次尝试。我的代码最多 String password = obj.getString("password");对我没问题。你建议给我的另一个。所以如果你告诉我怎么做会更有帮助吗? | usernameAll 不为空,我可以在 TextView 上显示它。但不能在 ListView 中。如果您想向我推荐任何其他代码,那就太好了。谢谢。
  • 我收到此错误:Cannot resolve constructor 'ArrayAdapter(android.content.Context, int, int, java.lang.String)' 来自此声明:adapter1 = new ArrayAdapter&lt;String&gt;(getApplicationContext(), android.R.layout.simple_list_item_1, android.R.id.text1, usernameAll);

标签: java android listview android-volley


【解决方案1】:

你不能将 hashmap 传递给数组适配器

https://developer.android.com/reference/android/widget/ArrayAdapter.html

也将其转换为文档中提到的列表

//Code Getting Collection of values from HashMap

Collection<String> values = myData.values();

//Creating an ArrayList of values

ArrayList<String> listOfValues = new ArrayList<String>(values);

详情请查看以下链接 http://javaconceptoftheday.com/how-to-convert-hashmap-to-arraylist-in-java/

【讨论】:

  • 啊哈!谢谢。对我来说,从HashMap 转换为List 似乎有点困难。 |你/任何人可以帮我写一个我在ArrayAdapter 中使用的小代码sn-p,我将能够在ListView 中显示所有值?提前致谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多