我是GSON库的新手,我有一个看起来像这样的json数据结构。
{ “网络”:[{ “NETWORKID”:0 “NETWORKNAME”: “朋友”},{ “NETWORKID”: “1”, “NETWORKNAME”: “东西”},{ “NETWORKID”:“4 “,”networkName“:”第二件事“},{”networkId“:”28“,”networkName“:”另一个网络“},{”networkId“:”2“,”networkName“:”blah“}]
我通过以下请求获取此数据
RestClient client = new RestClient();
client.setDebug();
client.AddParam("method", "get_user_networks");
client.AddParam("session_key", sessionKey);
client.Execute();
String response = client.getResponse();
NetworksData retval = null;
Gson gson = new Gson();
retval = gson.fromJson(response, NetworksData.class);
Networks数据类看起来像这样
public class NetworksData {
private List<Network> networks;
private List<Group> groups;
public List<Network> getNetworks() {
return this.networks;
}
public List<Group> getGroups() {
return this.groups;
}
public void setNetworks(List<Network> networks) {
this.networks = networks;
}
public void setGroups(List<Group> groups) {
this.groups = groups;
}
}
和/或网络类是以下
public class Network {
private String networkName;
private Integer networkId;
public String getName(){
return this.networkName;
}
public Integer getId(){
return this.networkId;
}
public void setName(String nameIn){
this.networkName = nameIn;
}
public void setId(Integer idIn){
this.networkId = idIn;
}
}
我正在尝试使用网络名称来扩展一个微调器,我可以手动遍历数组并构建一个String数组并以这种方式对其进行膨胀,但这似乎与整个对象模型相反。有没有办法直接将列表放入微调器?
这是一种有效但错误的方法
networkItems = new String[total];
// networks
if (retval.getNetworks().size() > 0) {
for (Network network : retval.getNetworks()) {
networkItems[i] = network.getName();
i++;
}
}
然后像这样膨胀微调器
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, networkItems);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
networkSpinner.setAdapter(adapter);
答案 0 :(得分:1)
使用您的nerworks列表或NetworksData对象构建自定义适配器。您可以继承BaseAdapter来实现适配器(请注意,您也可以使用ArrayAdapter(或任何其他实现)进行子类化或组合以重用它)。