0

我正在编写本教程,它是关于使用 Json 和 php 脚本查询 mysql 数据库,一切都很好,但我正在努力将您在 ListView 中看到的这些结果列出,而不是像您一样作为 TextView见下文。这似乎很容易,但我无法通过用 ListView 替换 TextView 来使其工作。图片:

这是教程(里面的代码): http ://blog.erlem.fr/fr/applications-mobiles/android/27-android-blog/applications-mobiles/android/59-android-connexion-a-mysql-a -laide-de-php.html

4

1 回答 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 回答