我是 android 编程的新手,我觉得我正在敲一堵砖墙。
我正在尝试设置两个微调器,因此当在微调器一中选择该项目时,它会在微调器二中显示一个新的项目列表,但问题是微调器有 4 个项目,每个项目我想提出不同关于第二个微调器的信息,如果在选择第二个微调器中的项目时这还不够,我希望它喜欢另一组信息。
任何帮助将不胜感激。
我是 android 编程的新手,我觉得我正在敲一堵砖墙。
我正在尝试设置两个微调器,因此当在微调器一中选择该项目时,它会在微调器二中显示一个新的项目列表,但问题是微调器有 4 个项目,每个项目我想提出不同关于第二个微调器的信息,如果在选择第二个微调器中的项目时这还不够,我希望它喜欢另一组信息。
任何帮助将不胜感激。
让您的活动实现 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。祝你好运!
在我看来,一个更简洁的解决方案是内联定义您的侦听器或将它们定义为您的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*/);
}
});
}
}