Нов съм в библиотеката GSON, имам json структура от данни, която изглежда така.
{"networks":[{"networkId":0,"networkName":"Приятели"},{"networkId":"1","networkName":"something"},{"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);