填充 Listview 时 Arraylist 和 Hashmap 的问题

Posted

技术标签:

【中文标题】填充 Listview 时 Arraylist 和 Hashmap 的问题【英文标题】:Problem with Arraylist and Hashmap when populating Listview 【发布时间】:2020-02-13 11:30:08 【问题描述】:

我正在尝试将数据从我的 JSON 文件获取到 HashMap,然后到我的 Arraylist,它应该显示在 Listview 中。但它没有显示任何东西。你能帮帮我吗?

公共类 SendPostRequest 扩展 AsyncTask

    String data ="";
    protected void onPreExecute()

    protected String doInBackground(String... arg0) 

       try


                JSONArray json = new JSONArray(data);
                ArrayList<HashMap<String, String>>  arrayList = new ArrayList<HashMap<String, String>>();

                HashMap<String, String> map = new HashMap<String, String>();

                try 
                for(int i=0;i<json.length();i++)
                    JSONObject e =json.getJSONObject(i);

                    map.put("id", String.valueOf(i));
                    map.put("Name", "Vorname: " + e.getString("meta_value"));
                    map.put("orderid", "id: " + e.getString("post_id"));
                    arrayList.add(map);
                    //return map.toString();
                

                    ArrayAdapter arrayAdapter = new ArrayAdapter(activity2.this, android.R.layout.simple_list_item_1,arrayList);

                catch (JSONException e)
                    Log.e(this.getClass().getName(), "Some JSON error occurred" + e.getMessage());

                
                return data;


            
            else 
                return new String("false : "+responseCode);
            
        
        catch(Exception e)
            return new String("Exception: " + e.getMessage());
        

    

【问题讨论】:

您好,欢迎来到 ***。我强烈建议您按照this *** article 的指南编辑您的问题。因为 *** 并不是用来帮助您调试代码的论坛。您可能还想通过tour 更熟悉 SO 和预期内容。 【参考方案1】:

要填充列表视图,您需要在创建数组适配器后添加这段代码

ListView myListView = (ListView) findViewById(R.id.idOfYourListView)

runOnUiThread(new Runnable() 

    @Override
    public void run()
    
     myListView.setAdapter( arrayAdapter );
    
);

【讨论】:

它出现错误消息:“异常:只有创建视图层次结构的原始线程才能触摸此视图”【参考方案2】:

从现在开始你应该用 RecyclerView 替换 ListView

【讨论】:

以上是关于填充 Listview 时 Arraylist 和 Hashmap 的问题的主要内容,如果未能解决你的问题,请参考以下文章

ListView 填充了相同的值

android listview 怎么添加数据

ArrayAdapter 未使用 notifyDataSetChanged() 进行更新

将数据填充到 Listview 但 Arrayadapter 不工作

如何在不显示附加信息的情况下将附加信息放入用于 ListView 的 Arraylist

更改了arraylist时,ArrayList和ListView的Android数组适配器不会更新