Android,2个微调器

时间:2013-01-14 02:03:33

标签: android android-intent android-spinner

我是Android编程的新手,我觉得我正在抨击我的砖头。

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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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添加第二个子句,检查父级是否等于spinner2,并将其他数据集替换为第三个微调器。祝你好运!

答案 1 :(得分:0)

在我看来,更清晰的解决方案是内联定义您的听众或将其定义为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*/);
            }
        });
    }
}