我有一个 android/java 任务,我想将 JSON 值放入一个字符串数组中以显示在 ListView 中,但我不确定从哪里开始?谢谢。
private String[] values;
...
// this is what is returned from the web server (Debug view)
// jObj = {"success":1,"0":"Mike","1":"message 1","2":"Fred","3":"message 2","4":"John","5":"message 3"};
try {
if (jObj.getInt("success") == 1) {
.
// what i'm trying to do here is iterate thru JObj and assign values to the
// values array to populate the ArrayAdapter so that the ListView displays this:
//
// Mike: Message 1
// Fred: Message 2
// John: Message 3
//
.
this.setListAdapter(new ArrayAdapter<String>(
this, android.R.layout.simple_list_item_1, android.R.id.text1, values));
ListView listView = getListView();
}
}
catch (JSONException e) {
Log.e(TAG, e.toString());
}
最佳答案
使用 ArrayList
而不是 Array
添加从 Json Obejct 检索的值,然后将 ListView 的 ArrayList 设置为数据源。将您的代码更改为:
ArrayList<String> array_list_values = new ArrayList<String>();
try {
if (jObj.getInt("success") == 1) {
array_list_values.add(jObj.getString("0"));
array_list_values.add(jObj.getString("1"));
array_list_values.add(jObj.getString("2"));
array_list_values.add(jObj.getString("3"));
array_list_values.add(jObj.getString("4"));
array_list_values.add(jObj.getString("5"));
this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, array_list_values));
ListView listView = getListView();
}
}
catch (JSONException e) {
Log.e(TAG, e.toString());
}
编辑: 如果消息数量并不总是相同,它可能是 1 到更大的数字,那么您可以将 JsonObject 迭代为:
ArrayList<String> array_list_values = new ArrayList<String>();
try {
if (jObj.getInt("success") == 1) {
Iterator iter = jObj.keys();
while(iter.hasNext()){
String key = (String)iter.next();
String value = jObj.getString(key);
array_list_values.add(value);
}
this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, array_list_values));
ListView listView = getListView();
}
}
catch (JSONException e) {
Log.e(TAG, e.toString());
}
关于java - 如何从 JSONObject 填充字符串数组以在 ListView 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13560445/