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

Posted

技术标签:

【中文标题】将数据填充到 Listview 但 Arrayadapter 不工作【英文标题】:Populate Data to Listview but Arrayadapter not working 【发布时间】:2020-02-10 08:57:26 【问题描述】:

我正在尝试将数据从我的arrayList 填充到列表视图。但由于某种原因,我收到错误error: no suitable constructor found for ArrayAdapter(activity2.SendPostRequest,int,int,ArrayList<HashMap<String,String>>) constructor ArrayAdapter.ArrayAdapter(Context,int,int,HashMap<String,String>[]) is not applicable

                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<HashMap<String, String>> adapter = new ArrayAdapter<HashMap<String, String>>(this,android.R.layout.simple_list_item_1, android.R.id.text1, arrayList);

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

                

找不到解决办法

【问题讨论】:

【参考方案1】:

ArrayAdapter(activity2.SendPostRequest,int,int,ArrayList>)

问题是您将其作为第一个参数传递给适配器以提供上下文。

constructor ArrayAdapter.ArrayAdapter(Context,int,int,HashMap&lt;String,String&gt;[])

Solution

而不是这个pass this

getContext() or getActivity()

因为这可能指向不同的上下文,具体取决于您使用的是什么。

请参阅此link 以深入了解thiskeyword

【讨论】:

@Arul_Mani 那么我需要更改哪一部分? @Arul_Mani 因为我把它改成了ArrayAdapter&lt;HashMap&lt;String, String&gt;&gt; adapter = new ArrayAdapter&lt;HashMap&lt;String, String&gt;&gt;(this.getActivity(),android.R.layout.simple_list_item_1, android.R.id.text1, arrayList);.getActivity 是红色的 而不是“this”传递getActivity或getContext() @Arul_Mani 那么这段代码应该是什么样子(对不起,如果我不检查它:)) @Arul_Mani 所以它应该看起来像这样还是?:ArrayAdapter&lt;HashMap&lt;String, String&gt;&gt; adapter = new ArrayAdapter&lt;HashMap&lt;String, String&gt;&gt;(activity2.this, android.R.layout.simple_list_item_1, android.R.id.text1, arrayList);

以上是关于将数据填充到 Listview 但 Arrayadapter 不工作的主要内容,如果未能解决你的问题,请参考以下文章

使用ListView数据填充多个TextBox

Android:自定义 ListView 不会立即填充

ListView 填充了相同的值

一起学Android之ListView

如何从数组中填充 ListView?

填充 Listview 时 Arraylist 和 Hashmap 的问题