来自json原始文件的Spinner

时间:2016-06-27 18:53:31

标签: android arrays json android-studio spinner

我有一个像这样的原始json文件

{"_id":707860,"name":"Hurzuf","country":"UA","coord":{"lon":34.283333,"lat":44.549999}}
{"_id":519188,"name":"Novinki","country":"RU","coord":{"lon":37.666668,"lat":55.683334}}
{"_id":1283378,"name":"Gorkhā","country":"NP","coord":{"lon":84.633331,"lat":28}}
{"_id":1270260,"name":"State of Haryāna","country":"IN","coord":{"lon":76,"lat":29}}
{"_id":708546,"name":"Holubynka","country":"UA","coord":{"lon":33.900002,"lat":44.599998}}
{"_id":1283710,"name":"Bāgmatī Zone","country":"NP","coord":{"lon":85.416664,"lat":28}}
{"_id":529334,"name":"Mar’ina Roshcha","country":"RU","coord":{"lon":37.611111,"lat":55.796391}}
{"_id":1269750,"name":"Republic of India","country":"IN","coord":{"lon":77,"lat":20}}
{"_id":1283240,"name":"Kathmandu","country":"NP","coord":{"lon":85.316666,"lat":27.716667}}
{"_id":703363,"name":"Laspi","country":"UA","coord":{"lon":33.733334,"lat":44.416668}}

它不是JSON数组 - 它是一个巨大的JSON对象列表。这里Populate the spinner from JSON In Android,这里Convert json array to list of json(raw) strings android how to convert json array to string array或甚至https://developer.android.com/guide/topics/ui/controls/spinner.html,我假设我有一个JSON数组或静态数据。我想要两个旋转器,其中一个用于国家,第二个用于城市。我们假设我有国家列表,因此它将是一个静态数据。我希望第二个微调器从原始json文件动态加载与第一个微调器中所选城市对应的所有城市。我认为我可以处理微调器的东西但是如何将原始json文件中的数据加载到微调器中?我是否需要修改此原始文件以使其成为json数组,然后执行以下操作:

JSONArray jsonArray = new JSONArray(arraytitle);
List<String> list = new ArrayList<String());
for(int i = 0 ; i < jsonArray.length();i++){
list.add(jsonArray.getJSONObject(i));
}

修改 我找到了这个答案https://stackoverflow.com/a/26780581/4671908 - 如果我成功,我会发一个答案

1 个答案:

答案 0 :(得分:2)

所以你有两个问题:

如何在第一个微调器更新时动态更新第二个微调器

你需要做的三件事:

  1. 实施AdapterView.OnItemSelectedListener
  2. 更新第二个Spinner的适配器内的支持数据集。在你的情况下,它将是一个城市列表。 (为此,您需要创建自己的ArrayAdapter扩展适配器)
  3. 致电adapter.notifyDataSetChanged()
  4. 如何使用JSON

    那里有几种解决方案。但是,如果不了解要求的任何细节,其他人很难提供最适合您情况的那个。

    当你遇到设计问题时,请记住一件事:

      

    首先做最简单的事。