【问题标题】:How to change second spinner array when selecting in first spinner android在第一个微调器android中选择时如何更改第二个微调器数组
【发布时间】:2013-06-05 16:42:47
【问题描述】:

我有两个微调器,当我选择第一个微调器时,基于第一个微调器选择,第二个微调器数组来获取更改。如何做到这一点。

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <string-array name="type">
        <item>Select Type</item>
        <item >Color</item>
        <item >Weeks</item>
      </string-array>

    <string-array name="color">
        <item>Blue</item>
        <item >Orange</item>
        <item >Red</item>
        <item >Green</item>
       </string-array>

     <string-array name="weeks">
        <item>Sunday</item>
        <item >Monday</item>
        <item >Tuesday</item>
        <item >Wednesday</item>
              </string-array>

</resources>

  <TextView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="Select Type:"/>

  <Spinner
  android:id="@+id/spinner"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:prompt="@string/spinner_title"
  android:drawSelectorOnTop = "true"/>


    <Spinner
    android:id="@+id/spinner1"
    android:layout_width="match_parent"
          android:prompt="@string/spinner_title1"
    android:layout_height="wrap_content" />

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.type, android.R.layout.simple_spinner_item);

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

在这两个微调器中,在第一个微调器中,我使用了“类型”,根据第一个微调器类型的选择,如何更改第二个微调器以使用数组颜色和周数?

提前致谢

【问题讨论】:

标签: android android-layout android-intent android-listview android-spinner


【解决方案1】:

在第一个微调器OnItemSelectedListener 中执行以下方式..

spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parentView,
                    View selectedItemView, int position, long id) {
                // Object item = parentView.getItemAtPosition(position);

                // Depend on first spinner value set adapter to 2nd spinner
            if(pos == 1){
              spinner2.setAdapter(adapter2);
            }else{
              spinner2.setAdapter(adapter3);
            } 

            }

            public void onNothingSelected(AdapterView<?> arg0) {// do nothing
            }

        });

【讨论】:

    【解决方案2】:

    您可以在微调器中动态添加值,而不是使用 xml 文件。 比你可以像这样在onItemSelected 方法中在 spn2 中添加值。

    private ArrayAdapter<String> spn1Adpt;
    private ArrayAdapter<String> spn2Adpt;
    
    private ArrayList<String> spn1List = new ArrayList<String>();
    private ArrayList<String> spn2List = new ArrayList<String>();
    
    spn1Adpt= new MySpinnAdapter(this, spn1List );
    spn2Adpt= new MySpinnAdapter(this, spn2List );
    
    spn1.setAdapter(spn1Adpt);
    spn2.setAdapter(spn2Adpt);
    
    spn1.setOnItemSelectedListener(new OnItemSelectedListener() {
    
            @Override
            public void onItemSelected(AdapterView<?> par, View v, int p,
                    long arg3) {
    
                listD.clear();
    
                    spn2List.add("val");
                    spn2List.add("val");
                    snn2Adpt.notifyDataSetChanged();
    
            }
    
            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub
    
            }
        });
    

    这里我使用了MySpinnAdapter,这是您可以根据需要制作的自定义适配器,也可以直接使用 ArrayAdapter。

    【讨论】:

      【解决方案3】:

      这是另一种简单的方法。

      这里有三个微调器,每个都相互依赖:

      public class MainActivity extends AppCompatActivity {
      
          Spinner citySpinner;
          Spinner townSpinner;
          Spinner streetSpinner;
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
      
              citySpinner = findViewById(R.id.citySpinner);
              townSpinner = findViewById(R.id.townSpinner);
              streetSpinner = findViewById(R.id.streetSpinner);
      
              final String city[] = {"--Select Your District--", "Kozhikkode City"};
              final String kozhikkodeCity[] = {"--Select Your Town--", "vadakara Town","Nadapuram Town"};
              final String vadakaraTown[] = {"--Select Your Street--", "Orkkateri Street","vellikulangara Street"};
              final String nadapuramTown[] = {"--Select Your Street--", "Edacheri Street","Purameri Street"};
      
              ArrayAdapter<String> cityAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,city);
              citySpinner.setAdapter(cityAdapter);
      
              citySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                  @Override
                  public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
      
      
                      if (position == 1){
                          ArrayAdapter<String> townAdapter =  new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_spinner_dropdown_item,kozhikkodeCity);
                          townSpinner.setAdapter(townAdapter);
      
                          townSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                              @Override
                              public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                                  if (position == 1){
                                      ArrayAdapter<String> streetAdapter =  new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_spinner_dropdown_item,vadakaraTown);
                                      streetSpinner.setAdapter(streetAdapter);
                                  }else if (position == 2){
                                      ArrayAdapter<String> streetAdapter =  new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_spinner_dropdown_item,nadapuramTown);
                                      streetSpinner.setAdapter(streetAdapter);
                                  }
                              }
      
                              @Override
                              public void onNothingSelected(AdapterView<?> parent) {
      
                              }
                          });
                      }
                  }
      
                  @Override
                  public void onNothingSelected(AdapterView<?> parent) {
      
                  }
              });
      
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多