android – (动态)多个微调器状态/城市

前端之家收集整理的这篇文章主要介绍了android – (动态)多个微调器状态/城市前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我必须开发一个 android视图,这样我就有2个微调控件,一个用于州,第二个用于城市.

我的问题是,无论何时选择州,我如何自动填充城市微调器?

它背后的逻辑是什么?

我的string.xml:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <string name="spinner_category"></string>
  4. <string-array name="category_state">
  5. <item >kerala</item>
  6. <item >tamil nadu</item>
  7. <item >Andra Pradesh</item>
  8. <item >karnataka</item>
  9. </string-array>
  10. </resources>

我的main.xml:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical">
  6.  
  7. <LinearLayout android:orientation="horizontal"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content">
  10. <TextView android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:padding="10dip"
  13. android:text="Select : "/>
  14. <Spinner android:layout_width="250dip"
  15. android:layout_height="wrap_content"
  16. android:id="@+id/spinner_state"/>
  17. </LinearLayout>
  18.  
  19. <LinearLayout android:orientation="horizontal"
  20. android:layout_width="fill_parent"
  21. android:layout_height="wrap_content">
  22. <TextView android:layout_width="wrap_content"
  23. android:layout_height="wrap_content"
  24. android:padding="10dip"
  25. android:text="Select : "/>
  26. <Spinner android:layout_width="250dip"
  27. android:layout_height="wrap_content"
  28. android:id="@+id/spinner_state"/>
  29. </LinearLayout>
  30. </LinearLayout>

还有我的activity.java文件

  1. package com.converter;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.widget.ArrayAdapter;
  6. import android.widget.Spinner;
  7.  
  8. public class ConverterActivity extends Activity
  9. {
  10. /** Called when the activity is first created. */
  11. @Override
  12. public void onCreate(Bundle savedInstanceState)
  13. {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.main);
  16.  
  17. Spinner spinner_s = (Spinner)findViewById(R.id.spinner_state);
  18. ArrayAdapter<CharSequence> category_adapter = ArrayAdapter.createFromResource(
  19. this,R.array.category_array,android.R.layout.simple_spinner_item);
  20. category_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  21. spinner_s.setAdapter(category_adapter);
  22.  
  23. }
  24. }

解决方法

例:
  1. Spinner city=(Spinner)findViewById(R.id.citySpinner);
  2. Spinner state=(Spinner)findViewById(R.id.stateSpinner);
  3.  
  4. final ArrayList<String> state_options=new ArrayList<String>();
  5. final ArrayList<String> city_options=new ArrayList<String>();
  6.  
  7. state_options.add("state_1");
  8. state_options.add("state_2");
  9. state_options.add("state_3");
  10. // Here you can also get a cursor and add Strings as options to state_options instead of what i have done
  11.  
  12. city_options.add("city_1_state_1");
  13. city_options.add("city_2_state_1");
  14. city_options.add("city_3_state_1");
  15. // Here you can also get a cursor and add Strings as options to city_options instead of what i have done
  16.  
  17. ArrayAdapter<String> cityAdapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_item,city_options);
  18. city.setAdapter(cityAdapter);
  19.  
  20. ArrayAdapter<String> stateAdapter = new ArrayAdapter<String>(getApplicationContext(),state_options);
  21. state.setAdapter(stateAdapter);
  22.  
  23. state.setOnItemSelectedListener(new OnItemSelectedListener() {
  24.  
  25. @Override
  26. public void onItemSelected(AdapterView<?> arg0,View view,int position,long id) {
  27.  
  28. String stateName=state_options.get(position).toString();
  29. resetCity(stateName);
  30. }
  31.  
  32. @Override
  33. public void onNothingSelected(AdapterView<?> arg0) {
  34.  
  35. }
  36. });

现在,

  1. public void resetCity(String stateName)
  2. {
  3. city_options.removeAll(city_options);//i haven't checked this.
  4. if(stateName.eqauls("state_1"))
  5. {
  6. city_option.add("city_1_state_1");
  7. city_options.add("city_2_state_1");
  8. city_options.add("city_3_state_1");
  9. //you can also get a cursor and add Strings as options to city_options instead of what i have done
  10. }
  11. else if(stateName.eqauls("state_2"))
  12. {
  13. city_option.add("city_1_state_2");
  14. city_options.add("city_2_state_2");
  15. city_options.add("city_3_state_2");
  16. // you can also get a cursor and add Strings as options to city_options instead of what i have done
  17. }
  18. else
  19. {
  20. city_option.add("city_1_state_3");
  21. city_options.add("city_2_state_3");
  22. city_options.add("city_3_state_3");
  23. //you can also get a cursor and add Strings as options to city_options instead of what i have done
  24. }
  25.  
  26. ArrayAdapter<String> cityAdapter = new ArrayAdapter<String>(getApplicationContext(),city_options);
  27. city.setAdapter(cityAdapter);
  28. }

这是最简单的示例.您可以从数据库中设置city_options和state_options.然后您可以使用它来填充accoring spinners.

猜你在找的Android相关文章