2012-04-16 40 views
0

我正在研究本教程,它是關於通過使用Json和php腳本查詢mysql數據庫,並且一切都很好,但我正在努力列出這些結果如下所示,在ListView中查看,而不是TextView。這似乎很容易,但我不能通過用ListView替換TextView來實現它。 圖像:在Android的列表視圖中列出mysql的結果

這裏是教程(代碼中): http://blog.erlem.fr/fr/applications-mobiles/android/27-android-blog/applications-mobiles/android/59-android-connexion-a-mysql-a-laide-de-php.html

回答

1

所有的下面假定您已經解析了出來JSON到一個數組。請參閱this for parsing help.

ListView使用適配器來抓取元素以填充列表行。您必須通過List或數組(ArrayList,您有什麼)將JSON結果提供給SimpleListAdapter。

this page about listviews

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 /名稱)

然後應用適配器

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"); 
} 

這是一個非常懶惰的方式來做到這一點,可能是不好的做法,但你可以得到的想法。

+0

謝謝你,但仍然無法使其工作,反正你知道任何其他方式來查詢列表視圖SQL數據庫並顯示結果? – Common 2012-04-18 00:17:27

+0

我正是這麼做的。我做了一個php webservice,它將json作爲一個字符串發送,然後將它們分離出來。如果即時通訊使用列表視圖,我將結果添加到一個ArrayList,然後將數組關閉到一個ArrayAdapter。今晚我不在工作站附近,但稍後會提供更詳細的示例。 – h4rpur 2012-04-19 02:08:27

+0

感謝您的幫助。有用 – Common 2012-04-20 23:45:30