2016-08-23 2 views
-2

나는 두 개의 spinner.one이 국가를 대표하는 도구 모음에 위치하며 다른 부분은 area.i를 나타내는 조각에 위치하고 있습니다. 서버에서 데이터를 가져 오는 중입니다. 특정 국가를 선택하면 할 수 있습니다. 영역 회 전자에 표시됩니다. 안드로이드 앱에서 국가에 따라 지역을 어떻게 바꿀 수 있습니까?

내 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) { 

      } 
     }); 


    } 
+3

귀하의 회 전자 코드는 어디에 있습니까? –

답변

0

난 당신이 구축 위해 통과해야하는 일반적인 단계를 개요됩니다 데이터를 적절한 방법으로

첫 번째. 주어진 JSON을 구문 분석해야합니다. I 매우GSON과 같은 라이브러리 사용을 권장합니다. 사용하기 쉽고 정말 도움이됩니다. GSON을 사용하여 전달하려면 국가CountryArea의 두 개 이상의 클래스를 만들어야합니다. Country 클래스에는 CountryArea 객체의 목록이 있어야합니다. 변수 이름이 인 경우의 키가 JSON의 해당 키이거나 SerializedName GSON이라는 속성을 사용하는지 확인하십시오.

2 위.onItemSelected을 누르면 두 번째 Spinner에 첫 번째 Spinner가 채워지는 것과 같은 방식으로 첫 번째 Spinner가 채워지지만 이번에는 해당 국가 영역이 채워집니다.

+0

나는 이미'countryAdapter = new ArrayAdapter '대신에'countryAdapter = new ArrayAdapter '를 사용할 것을 제안했으나 GSON을 사용했을 때 그 POJO 클래스는 허용되지 않을 것입니다. – pskink

+0

당신의 답변을 수락했으나 나는이 절차를 어떻게 사용할 수 있을지 모른다. Country 클래스를 만들고 데이터를 저장했습니다. 그러나 변화는 없습니다. @ pskink –

관련 문제