2016-07-12 2 views
1

두 개의 스피너를 만들고 싶습니다. 첫 번째 스피너에는 상태 목록이 있고 두 번째 스피너에는 도시 목록이 있습니다. 첫 번째 스피너에서 특정 상태를 선택하면 다음 스피너는 선택된 상태의 도시 만 표시해야합니다.조건에 따라 Spinner에서 값 정렬

내 모든 국가와 도시를 위해 만든

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    Spinner state = (Spinner) findViewById(R.id.spinnerState); 
    ArrayAdapter<CharSequence> stateadapter = ArrayAdapter.createFromResource(
      this, R.array.item_state, android.R.layout.simple_spinner_item); 
    stateadapter.setDropDownViewResource(R.layout.spinner_layout); 
    state.setAdapter(stateadapter); 




    Spinner city = (Spinner) findViewById(R.id.spinnerCity); 
    ArrayAdapter<CharSequence> cityadapter = ArrayAdapter.createFromResource(
      this, R.array.item_city, android.R.layout.simple_spinner_item); 
    cityadapter.setDropDownViewResource(R.layout.spinner_layout); 
    city.setAdapter(cityadapter); 


}} 

내 안드로이드 코드입니다.

+0

이 어떻게 XML 파일의 상태와 도시를 저장하는? –

답변

0

스피너 상태로 리스너를 추가

state.setOnItemSelectedListener(this);

리스너를 구현 :

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    String selectedState = state.getSelectedItem().toString(); 

    List<String> citiesInState = new ArrayList<>(); 
    // add all cities in selectedState to this list using citiesInState.add(); 
    // this will depend upon how you are storing the cities and states 

    ArrayAdapter<String> cityDataAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_item, citiesInState); 
    cityDataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    city.setAdapter(cityDataAdapter); 

} 
1

당신이 이것을 달성 할 수있는 많은 방법, 예를 들어, 다음과 같습니다

ArrayAdapter<CharSequence> stateadapter; 
switch(state) 
{ 
    case "Florida": 
     { 
      stateadapter = ArrayAdapter.createFromResource(this, R.array.cities_florida, android.R.layout.simple_spinner_item); 
     } break; 
} 

(일종의 하드 코드)

가장 좋은 해결책은 xml 파일에 정의하는 것입니다 (어쩌면 인터넷에서이 파일을 가져올 수 있습니다). 파일을 읽고 선택된 상태의 모든 도시를 반환하는 클래스를 작성하십시오.

읽기 : https://developer.android.com/training/basics/network-ops/xml.html