我有一个JSONarray,其中包含带有名称和定向参数的JSON对象,我想在ListView中对其进行显示。 (全部在try catch块中)。
//A partir del string que contiene el JSON crearemos un Objeto JSON que contendrá la cadena
JSONObject obj = new JSONObject(loadJSONFromAsset(this));
//Creamos un JSONArray que contiene varios objetos JSON
JSONArray m_jArry = obj.getJSONArray("librerias");
ArrayList<HashMap<String, String>> formList = new ArrayList<HashMap<String, String>>();
HashMap<String, String> m_li;
for (int i = 0; i < m_jArry.length(); i++) {
JSONObject jo_inside = m_jArry.getJSONObject(i);
//Log.d("Details-->", jo_inside.getString("formule"));
String formula_value = jo_inside.getString("Nombre");
String url_value = jo_inside.getString("Direccion");
//Add your values in your `ArrayList` as below:
m_li = new HashMap<String, String>();
m_li.put("Nombre", formula_value);
m_li.put("Direccion", url_value);
formList.add(m_li);
}
然后我创建一个包含JSONarray的ArrayAdapter
//El ArrayAdapter hace de intermediario entre la ListView y el DataSource
ArrayAdapter<HashMap<String, String>> adapter = new ArrayAdapter<HashMap<String, String>>(this, android.R.layout.simple_list_item_1, formList);
当我将信息显示到ListView中时,问题就来了,它显示了类似JSONArray格式的信息,并且我想选择如何显示信息。这是可能的?
listView.setAdapter(adapter);
在ListView的输出中,我以相同的格式接收该信息:
{Nombre:Libreria Jose,Direccion:Calle Gran de Sant Andreu 382}
{Nombre:Libreria Jose,Direccion:Calle Compte d'Urgell 171}
全部收尾!
答案 0 :(得分:0)
好吧,先列出一个简单的列表
List<String> list = new ArrayList<String>();
然后遍历当前HashMap
中所有formList
项,并根据需要list
或key
for (HashMap<String, String> map : formList)
for (Entry<String, String> mapEntry : map.entrySet())
{
String key = mapEntry.getKey();
String value = mapEntry.getValue();
//if you need only keys to display in the listview
list.add(key);
}
然后将该列表作为更简单的数据源提供给您的适配器
ArrayAdapter<List<String>> adapter = new ArrayAdapter<List<String>>(this, android.R.layout.simple_list_item_1, list);
最终设置适配器
listView.setAdapter(adapter);
答案 1 :(得分:0)
如果只想显示名称,则可以创建List<String>
而不是哈希图的ArrayAdapter,请考虑使用以下代码:
//A partir del string que contiene el JSON crearemos un Objeto JSON que contendrá la cadena
JSONObject obj = new JSONObject(loadJSONFromAsset(this));
//Creamos un JSONArray que contiene varios objetos JSON
JSONArray m_jArry = obj.getJSONArray("librerias");
List<String> m_li = new ArrayList();
for (int i = 0; i < m_jArry.length(); i++) {
JSONObject jo_inside = m_jArry.getJSONObject(i);
//Log.d("Details-->", jo_inside.getString("formule"));
String formula_value = jo_inside.getString("Nombre");
String url_value = jo_inside.getString("Direccion");
//Add your values in your `ArrayList` as below:
m_li.add(formula_value);
}
将列表提供为阵列适配器的数据源,并将适配器设置为listview:
ArrayAdapter<List<String>> adapter = new ArrayAdapter<List<String>>(this, android.R.layout.simple_list_item_1, m_li);
listview.setAdapter(adapter);