if (status == 200) {
String result = EntityUtils.toString(response.getEntity());
Log.d("Response", result);
ArrayAdapter < String > adapter = new ArrayAdapter < String > (getActivity(),
android.R.layout.simple_list_item_1, result);
setListAdapter(adapter);
}
我无法将回复设置到我的列表中。我得到了我的答复
{
"Appointments": [{
"Name": "Kevin",
}, {
"Name": "John",
}]
}
如何在listView中设置我的名字参数。
答案 0 :(得分:2)
如何在listView中设置我的名字参数。
一目了然。 ArrayAdapter
的第三个参数应该是集合,但是您只传递简单的String。根据您的JSON
我建议您:
JSON
并创建人员集合public class Person {
private String name;
...
// getters and setters
@Override
public String toString() {
return this.name;
}
}
然后,您需要解析JSON
并获取正确的数据:
List<Person> persons = new ArrayList<Person>();
Person person = null;
JSONObject root = new JSONObject(sourceString);
JSONArray appointments = root.getJSONArray("Appointments");
JSONObject child = null;
for (int i = 0; i < appointments.length(); i++) {
child = appointments.getJSONObject(i);
if (child != null)
person = new Person();
person.setName(child.getString("Name"));
persons.add(person);
}
}
然后初始化ListAdapter
:
new ArrayAdapter<String>(getActivity(), layout, persons);
现在你明白了。
我覆盖toString()
方法的原因是,因为您使用内置Android布局的默认ArrayAdapter,List中的每个对象都将转换为String并将显示在ListView中,但如果我不知道t覆盖toString()
它不会返回人的名字,而是返回人物不可读字符串的字符串表示。
答案 1 :(得分:1)
result
是一个包含整个响应的String。您需要将该字符串解析或拆分为您想要的项目。我建议您在Android开发者网站上阅读有关ListViews和Adapters的更多信息。