【问题标题】:How can i change the area according to the country in android app?如何在android应用程序中根据国家/地区更改区域?
【发布时间】:2016-08-23 19:05:22
【问题描述】:

我有两个微调器。一个位于代表国家/地区的工具栏上,另一个位于代表区域的片段中。我正在从服务器获取数据,当我选择特定区域的国家时,我想这样做显示在区域微调器中。

这是我的 json 数据

    {
      "Status": 1,
      "StatusMessage": "Country and Country Area List",
      "data": [
        {
          "CountryID": "1",
          "CountryName": "India",
          "CountryArea": [
            {
              "CountryID": "1",
              "AreaID": "1",
              "AreaName": "Kuwait City(Capital)"
            },
            {
              "CountryID": "1",
              "AreaID": "2",
              "AreaName": " Hawally"
            },
            {
              "CountryID": "1",
              "AreaID": "3",
              "AreaName": "Farwaniya"
            },
            {
              "CountryID": "1",
              "AreaID": "4",
              "AreaName": "  Ahmadi"
            },
            {
              "CountryID": "1",
              "AreaID": "5",
              "AreaName": " Jahra"
            }
          ]
        },
        {
          "CountryID": "2",
          "CountryName": "Dubai",
          "CountryArea": [
            {
              "CountryID": "2",
              "AreaID": "6",
              "AreaName": " Jeddah"
            },
            {
              "CountryID": "2",
              "AreaID": "7",
              "AreaName": " Riyadh"
            },
            {
              "CountryID": "2",
              "AreaID": "8",
              "AreaName": " Khobar"
            },
            {
              "CountryID": "2",
              "AreaID": "9",
              "AreaName": " Abha"
            },
            {
              "CountryID": "2",
              "AreaID": "10",
              "AreaName": " Abqiq"
            },
            {
              "CountryID": "2",
              "AreaID": "11",
              "AreaName": " Abu Arish"
            },
            {
              "CountryID": "2",
              "AreaID": "12",
              "AreaName": " Al Ahsa"
            },
            {
              "CountryID": "2",
              "AreaID": "13",
              "AreaName": " Al Baha"
            },
            {
              "CountryID": "2",
              "AreaID": "14",
              "AreaName": " Al Dhahran"
            },
            {
              "CountryID": "2",
              "AreaID": "15",
              "AreaName": " Al Jubail"
            },
            {
              "CountryID": "2",
              "AreaID": "16",
              "AreaName": " Al Kharj"
            },
            {
              "CountryID": "2",
              "AreaID": "17",
              "AreaName": " Al Madina El Monawara"
            },
            {
              "CountryID": "2",
              "AreaID": "18",
              "AreaName": " Al Qatif"
            },
            {
              "CountryID": "2",
              "AreaID": "19",
              "AreaName": " Al Taif"
            },
            {
              "CountryID": "2",
              "AreaID": "20",
              "AreaName": " Almadnab"
            },
            {
              "CountryID": "2",
              "AreaID": "21",
              "AreaName": " Bisha"
            },
            {
              "CountryID": "2",
              "AreaID": "22",
              "AreaName": " Buraida"
            },
            {
              "CountryID": "2",
              "AreaID": "23",
              "AreaName": " Dawadmy"
            },
            {
              "CountryID": "2",
              "AreaID": "24",
              "AreaName": " Hafr Elbatin"
            },
            {
              "CountryID": "2",
              "AreaID": "25",
              "AreaName": " Hail "
            },
            {
              "CountryID": "2",
              "AreaID": "26",
              "AreaName": " Jazan"
            },
            {
              "CountryID": "2",
              "AreaID": "27",
              "AreaName": " Mecca"
            },
            {
              "CountryID": "2",
              "AreaID": "28",
              "AreaName": " Oniza"
            },
            {
              "CountryID": "2",
              "AreaID": "29",
              "AreaName": " Qurayat"
            },
            {
              "CountryID": "2",
              "AreaID": "30",
              "AreaName": " Zulfi"
            },
            {
              "CountryID": "2",
              "AreaID": "31",
              "AreaName": "Dammam"
            }
          ]
        }
      ]
    }

这是我的 CountryAdpter,位于工具栏:

 @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu, menu);
        super.onCreateOptionsMenu(menu, inflater);
        this.menu = menu;
        MenuItem menuItem = menu.findItem(R.id.menu_spinner).setVisible(true);
        mCountrySpinner = (Spinner) MenuItemCompat.getActionView(menuItem);


        countryAdapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, mCountryList);
        countryAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        mCountrySpinner.setAdapter(countryAdapter);

        mCountrySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                countryId = getCountryId.get(position);
                Log.e("countryid", countryId);


            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });


    }

【问题讨论】:

  • 您的微调器代码在哪里?

标签: android json spinner


【解决方案1】:

我将概述您需要完成的一般步骤,以便以正确的方式构建您的数据。

第一个。您需要解析给定的 JSON。我强烈推荐使用像 GSON 这样的库。它很容易使用,而且真的很有帮助。为了使用 GSON 传递它,您必须创建至少两个类 - CountryCountryArea。 Country 类应该有一个 CountryArea 对象列表。确保变量名称完全与 JSON 中的相应键匹配,或使用 GSON 的 SerializedName 属性。

第二个。当您点击 onItemSelected 时,以与填充第一个相同的方式填充第二个 Spinner,但这次使用相应的 Country Areas。

【讨论】:

  • 我已经建议 OP 使用 countryAdapter = new ArrayAdapter&lt;Country&gt; 而不是 countryAdapter = new ArrayAdapter&lt;String&gt; 但他只是忽略了这一点,所以可能使用 GSON 而这两个 POJO 类将不会被他接受
  • 我接受了您的回答,但我不知道如何使用此程序。我制作了 Country 类并在其中保存数据。但没有变化。@pskink
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-27
相关资源
最近更新 更多