好的,这里我有一个非常具有挑战性的问题(当然对我来说)。
我通过Web服务从MySql数据库中检索一些数据,以填充我的应用程序中的微调器。这个微调器显示城市,这个城市应该根据另一个微调器的状态(包含国家)而改变
到目前为止没问题。我可以检索数据,并且微调器应该更改。我的问题是,当用户从国家/地区选择其他项目时,我不希望我的应用反复连接以检索城市信息。
这是我真正的问题。理想情况下,我想将城市数据保存在每个国家/地区的一个字符串数组中,但考虑到我不知道将从我的数据库中加载多少个国家/地区,我的问题是:我怎么能实现这一目标?
我在想通过创建一个多维数组是可能的,但我不知道如何创建一个"数组数组"。
有什么想法吗?
非常感谢你。
答案 0 :(得分:2)
创建适当的数据结构。并检查它是否为null然后再次重新加载数据,否则执行常规操作。例如,参考getter setter class
public class SpinnerInfoData {
String city="",state="",countries="";
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getCountries() {
return countries;
}
public void setCountries(String countries) {
this.countries = countries;
}
}
答案 1 :(得分:1)
调用Web服务,您可以将每个国家/地区存储到数据库中作为JSON字符串,其中包含整个城市列表,例如:
{"id": "1", "name": "coutry1", "cities": [{"id": "1", "name": "city1"},{"id": "2", "name": "city2"},{"id": "3", "name": "cityx"}]}
稍后在SQLite上发出请求,您可以使用此JSONObject来创建Country
的实例 public class Country extends BaseElement{
private ArrayList<City> cities;
// Imagine that for each country we are storing the kind of JSON into the DB
// {"id": "1", "name": "coutry1", "cities": [{"id": "1", "name": "city1"},{"id": "2", "name": "city2"},{"id": "3", "name": "cityx"}]}
public Country(String jsonFromDB){
cities = new ArrayList<City>();
if(jsonFromDB != null && jsonFromDB.trim().length() > 0){
try {
JSONObject country = new JSONObject(jsonFromDB);
setId(country.getInt("id"));
setName(country.getString("name"));
JSONArray cts = country.getJSONArray("cities");
for(int i = 0; i < cts.length() ; i++){
cities.add(new City(cts.getJSONObject(i)));
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public ArrayList<City> getCities(){
return cities;
}
}
public class City extends BaseElement{
public City(JSONObject jsonFromDB) throws JSONException{
if(jsonFromDB != null){
setId(jsonFromDB.getInt("id"));
setName(jsonFromDB.getString("name"));
}
}
}
public class BaseElement{
private int id;
private String name;
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
然后,你可以在任何类型的适配器中使用Country的实例用于微调器,列表或可扩展列表....