Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android应用程序中根据国家更改区域?_Android_Json_Spinner - Fatal编程技术网

如何在android应用程序中根据国家更改区域?

如何在android应用程序中根据国家更改区域?,android,json,spinner,Android,Json,Spinner,我有两个微调器。一个位于代表国家的工具栏上,另一个位于代表区域的片段上。我正在从服务器获取数据。当我选择国家时,我想这样做,特定区域显示在区域微调器中 这是我的json数据 { "Status": 1, "StatusMessage": "Country and Country Area List", "data": [ { "CountryID": "1", "CountryName": "In

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

这是我的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"
            }
          ]
        }
      ]
    }
这是my 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) {

            }
        });


    }
@覆盖
创建选项菜单(菜单菜单,菜单充气机){
充气机。充气(右菜单,菜单);
super.onCreateOptions菜单(菜单,充气机);
this.menu=菜单;
MenuItem MenuItem=menu.findItem(R.id.menu\u微调器).setVisible(true);
mCountrySpinner=(微调器)MenuItemCompat.getActionView(menuItem);
countryAdapter=newArrayAdapter(getContext(),android.R.layout.simple\u微调器\u下拉菜单\u项,mCountryList);
countryAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
mCountrySpinner.setAdapter(countryAdapter);
mCountrySpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
countryId=getCountryId.get(位置);
Log.e(“countryid”,countryid);
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
}

我将概述以正确方式构建数据所需的一般步骤

1st.您需要解析给定的JSON。我强烈建议使用像GSON这样的库。它很容易使用,而且非常有用。要使用GSON通过它,您必须创建至少两个类-CountryCountryArea。类Country应该有CountryArea对象的列表。确保变量名mach完全来自JSON的对应键,或者使用GSON的SerializedName属性


2nd.当您点击ONIMSELECTED时,以与填充第一个微调器相同的方式填充第二个微调器,但是这次是针对相应的国家/地区。

你的微调器代码在哪里?我已经建议OP使用
countryAdapter=new ArrayAdapter
而不是
countryAdapter=new ArrayAdapter
,但他只是忽略了这一点,所以可能使用GSON和这两个POJO类不会被HIM接受。我接受了你的答案,但我不知道如何使用这个过程。我制作了Country class并将数据保存在其中。但是没有变化。@pskink