【问题标题】:Android, 2 spinners安卓,2 个微调器
【发布时间】:2013-01-14 02:03:33
【问题描述】:

我是 android 编程新手,我感觉自己正在敲砖头。

我正在尝试设置两个微调器,因此当在微调器一中选择该项目时,它会在微调器二中显示一个新的项目列表,但问题是微调器有 4 个项目,每个项目我想在第二个微调器上显示不同的信息,如果在选择第二个微调器中的项目时这还不够,我希望它喜欢另一组信息。

任何帮助将不胜感激。

【问题讨论】:

    标签: android android-intent android-spinner


    【解决方案1】:

    让您的活动实现 onItemSelectedListener,并将微调器绑定到它,如下所示:

    spinner1.setOnItemSelectedListener(this);
    spinner2.setOnItemSelectedListener(this);
    

    然后,您需要使用 onItemSelected 方法更改第二个微调器的数据集,如下所示:

    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
       if( parent == spinner1 ) {
              if( pos == 0 ) {
                 ArrayAdapter<String> newAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, newDataSet1);
                 newAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                 spinner2.setAdapter(newAdapter);
              } else if( pos == 1 ) {
                  //etc
              }
       }
    }
    

    您可以在外部 if 中添加第二个子句,检查 parent 是否等于 spinner2,并用其他数据集替换第三个类似的 spinner。祝你好运!

    【讨论】:

      【解决方案2】:

      在我看来,更简洁的解决方案是内联定义您的侦听器或将它们定义为 Activity 的内部类。

      例子:

      layout.xml

      <Spinner
          android:id="@+id/spinner_1"
          android:layout_width="match_parent"
          android:layout_height="wrap_content" />
      
      <Spinner
          android:id="@+id/spinner_2"
          android:layout_width="match_parent"
          android:layout_height="wrap_content" />
      

      MyActivity.java

      public class MyActivity extends Activity {
      
          @Override
          public void onCreate(Bundle savedInstanceState) {
      
              super.onCreate(savedInstanceState);
              setContentView(R.layout.main);
      
              Spinner spinnerOne = (Spinner) findViewById(R.id.spinner_1);
              Spinner spinnerTwo = (Spinner) findViewById(R.id.spinner_2);
              spinnerOne.setOnItemClickListener(new OnItemClickListener() {
      
                  public void onItemClick(AdapterView<?> parent, View view,
                          int position, long id) {
      
                      spinnerTwo.setAdapter(/*set new information in spinner 2 here*/);
                  }
              });
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-07
        • 1970-01-01
        • 2020-09-27
        • 2017-06-01
        • 2021-09-12
        相关资源
        最近更新 更多