我正在编写本教程,它是关于使用 Json 和 php 脚本查询 mysql 数据库,一切都很好,但我正在努力将您在 ListView 中看到的这些结果列出,而不是像您一样作为 TextView见下文。这似乎很容易,但我无法通过用 ListView 替换 TextView 来使其工作。图片:
问问题
878 次
1 回答
1
以下所有内容都假设您已经将 JSON 解析为一个数组。请参阅此以获取解析帮助。
ListViews 使用适配器来获取元素以填充列表行。您必须通过 List 或数组(ArrayList,你有什么)将 JSON 结果输入 SimpleListAdapter。
SimpleAdapter nommes = new SimpleAdapter(
this,
list,
R.layout.main_item_two_line_row,
new String[] { "line1","line2" },
new int[] { R.id.text1, R.id.text2 } );
(在您的情况下,您可以使用单行布局或本示例中的两行布局来显示/隐藏 id/name)
然后应用适配器
listView.setAdapter(nommes);
编辑:
jObject = new JSONObject("<your JSON string from provider>");
// in my case:
res = jObject.getJSONObject("results");
**dataAdapter = new ArrayAdapter<String>(this, R.layout.item, R.id.itemName);**
try {
for (int r = 0; r < rslt.length(); r++){
JSONArray jA = rslt.getJSONArray(Integer.toString(r));
schoolLocString = jA.getString(0) +"|"+ jA.getString(1) +"[" + jA.optString(2);
**dataAdapter.add(schoolLocString);**
}
**myListView.setListAdapter(dataAdapter);**
} catch (JSONException e) {
Log.v(TAG, "Exception " + e);
} catch (NullPointerException e){
Log.v(TAG, "NPE, no rslt");
}
这是一种非常懒惰的方法,可能是不好的做法,但你可以理解。
于 2012-04-16T20:59:38.263 回答