填充 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 的问题的主要内容,如果未能解决你的问题,请参考以下文章
ArrayAdapter 未使用 notifyDataSetChanged() 进行更新
将数据填充到 Listview 但 Arrayadapter 不工作