我有几个JSONObject的JSONArray,每个JSONObject包含Name和ID。如何仅显示名称并隐藏ID。我需要通过知道按下哪一行来获取ID。我不关心如何显示它,列表视图,表格,网格或其他什么。这是我从JSONArray获取数据的方式:
for (int i = 0; i < ans.length(); i++) {
int id = Integer.parseInt(ans.getJSONObject(i).getString("UserID"));
String disName = ans.getJSONObject(i).getString("DisplayName");
adapter.add(disName + " - " + id);
}
提前谢谢
在第一个答案之后,我创建了一个包含diaplyName和ID的类名DisNameID,并且toString返回displayName。此活动的listView名为&#34; frndLst&#34;。这是应填充列表视图的代码:
ListView lstFrnd = (ListView) findViewById(R.id.frndLst);
ArrayList<String> listItems = new ArrayList<String>();
ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(this, android.R.layout.XXX, listItems);
for (int i = 0; i < ans.length(); i++) {
int id = integer.parseInt(ans.getJSONObject(i).getString("UserID"));
String disName = ans.getJSONObject(i).getString("DisplayName");
DisNameID dis = new DisNameID(disName, id);
adapter.add(disName + " - " + id);
}
现在我有两个新问题:如何更改适配器来保存我的新类--DisNameID?在新的适配器构造函数上写什么而不是XXX?
答案 0 :(得分:1)
创建Holder对象,覆盖toString
:
class Holder {
private String name;
private String id;
//getters and setters;
public String toString(){ return name };
}
然后将这些对象添加到适配器。这样,将显示名称,但您可以使用this method从适配器获取Holder对象并使用id。