如何从使用GSON解析的数组中为微调器充气

时间:2011-05-18 00:03:53

标签: android spinner gson android-arrayadapter

我是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);

1 个答案:

答案 0 :(得分:1)

使用您的nerworks列表或NetworksData对象构建自定义适配器。您可以继承BaseAdapter来实现适配器(请注意,您也可以使用ArrayAdapter(或任何其他实现)进行子类化或组合以重用它)。