Я новичок в библиотеке GSON, у меня есть структура данных json, которая выглядит следующим образом.
{"networks": [{"networkId": 0, "networkName": "Friends"}, {"networkId": "1", "networkName": "что-то"}, {"networkId": "4", "networkName": "вторая вещь"}, {"networkId": "28", "networkName":" Другая сеть "}, {" networkId ":" 2 "," имя сети ":" бла "}]
Я получаю эти данные с помощью следующего запроса
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);
Класс данных сетей выглядит следующим образом:
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);