Java 保存未知数量数据的最佳方法?

Java 保存未知数量数据的最佳方法?,java,android,mysql,arrays,multidimensional-array,Java,Android,Mysql,Arrays,Multidimensional Array,好的,这里我有一个非常具有挑战性的问题(当然,对我来说) 我正在通过web服务从MySql数据库中检索一些数据,以便在我的应用程序中填充一个微调器。此微调器显示城市,此城市应根据另一微调器的状态(包含国家)进行更改 到目前为止没有问题。我可以检索数据,微调器会按其应该的方式进行更改。我的问题是,我不希望我的应用程序在用户从国家选择其他项目时,一次又一次地连接以检索城市信息 这是我真正的问题。理想情况下,我希望将每个国家的城市数据保存在一个字符串数组中,但考虑到我不知道将从我的数据库中加载多少个国

好的,这里我有一个非常具有挑战性的问题(当然,对我来说)

我正在通过web服务从MySql数据库中检索一些数据,以便在我的应用程序中填充一个微调器。此微调器显示城市,此城市应根据另一微调器的状态(包含国家)进行更改

到目前为止没有问题。我可以检索数据,微调器会按其应该的方式进行更改。我的问题是,我不希望我的应用程序在用户从国家选择其他项目时,一次又一次地连接以检索城市信息

这是我真正的问题。理想情况下,我希望将每个国家的城市数据保存在一个字符串数组中,但考虑到我不知道将从我的数据库中加载多少个国家,我的问题是:如何实现这一点

我认为创建多维数组是可能的,但我不知道如何创建“数组数组数组”

有什么想法吗


非常感谢您。

创建适当的数据结构。并检查是否为空,然后重新加载数据,否则执行常规操作。e、 g参考下面的getter setter类

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;
}

}创建适当的数据结构。并检查是否为空,然后重新加载数据,否则执行常规操作。e、 g参考下面的getter setter类

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;
}

}创建适当的数据结构。并检查是否为空,然后重新加载数据,否则执行常规操作。e、 g参考下面的getter setter类

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;
}

}创建适当的数据结构。并检查是否为空,然后重新加载数据,否则执行常规操作。e、 g参考下面的getter setter类

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;
}

}

调用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;
        }
    }
公共类国家/地区扩展BaseElement{
私人集市;
//想象一下,对于每个国家,我们都将这种JSON存储到数据库中
//{“id”:“1”,“name”:“coutry1”,“cities”:[{“id”:“1”,“name”:“city1”},{“id”:“2”,“name”:“city2”},{“id”:“3”,“name”:“cityx”}]}
公共国家/地区(字符串jsonFromDB){
城市=新阵列列表();
if(jsonFromDB!=null&&jsonFromDB.trim().length()>0){
试一试{
JSONObject国家=新的JSONObject(jsonFromDB);
setId(country.getInt(“id”);
setName(country.getString(“name”);
JSONArray cts=country.getJSONArray(“城市”);
对于(int i=0;i

然后,您可以在任何类型的微调器适配器、列表或可扩展列表中使用Country的实例……

调用web服务,您可以将每个国家作为JSON字符串存储到DB中,其中包含整个城市列表,例如:

{"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;
        }
    }
公共类国家/地区扩展BaseElement{
私人集市;
//想象一下,对于每个国家,我们都将这种JSON存储到数据库中
//{“id”:“1”,“name”:“coutry1”,“cities”:[{“id”:“1”,“name”:“city1”},{“id”:“2”,“name”:“city2”},{“id”:“3”,“name”:“cityx”}]}
公共国家/地区(字符串jsonFromDB){
城市=新阵列列表();
if(jsonFromDB!=null&&jsonFromDB.trim().length()>0){
试一试{
JSONObject国家=新的JSONObject(jsonFromDB);
setId(country.getInt(“id”);
setName(country.getString(“name”);
JSONArray cts=country.getJSONArray(“城市”);
对于(int i=0;i
然后您可以在任何类型的微调器适配器l中使用Country实例