我在我的系统中有两个微调。现在,我必须根据第一个微调器值更改第二个微调器的选定值。只要用户更改第一个微调器值,第二个微调器值就会根据第一个微调器的选定值自动设置。如何实现这一点?微调价值变动
微调价值变动
回答
从Hello Spinner教程:
现在创建一个实现AdapterView.OnItemSelectedListener嵌套类。这将提供一个回调方法,在从Spinner中选择一个项目时通知您的应用程序。下面是这个类应该是什么样子:
public class MyOnItemSelectedListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent,
View view, int pos, long id) {
Toast.makeText(parent.getContext(), "The planet is " +
parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView parent) {
// Do nothing.
}
}
的AdapterView.OnItemSelectedListener要求onItemSelected()和onNothingSelected()回调方法。前者在选择AdapterView中的项目时调用,在这种情况下,Toast短消息显示所选文本;当选择从AdapterView中消失时调用后者,在这种情况下不会发生,所以它被忽略。 现在MyOnItemSelectedListener需要被应用到微调。返回到onCreate()方法和下面的行添加到末尾: spinner.setOnItemSelectedListener(新MyOnItemSelectedListener());
换句话说,您需要创建一个OnItemSelectedListener,它修改第二个微调器的值,并将其附加到第一个微调器。
你必须穿上第一个微调的onItemSelected条件。通过这个例子,你可以根据第一次微调得到第二微调的值:
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
if(arg0.equals(spin0)){
spin1.setClickable(true);
if(spin0.getSelectedItem().equals("India"))
{
ArrayAdapter <String> s1 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_india);
s1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin1.setAdapter(s1);
}
else if(spin0.getSelectedItem().equals("Pakistan"))
{
ArrayAdapter <String> s2 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_pak);
s2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin1.setAdapter(s2);
}
else if(spin0.getSelectedItem().equals("China"))
{
ArrayAdapter <String> s3 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_china);
s3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin1.setAdapter(s3);
}
}
}
微调控件不支持项目点击事件。调用此方法将引发异常。而是使用AdapterView setOnItemSelectedListener。 – felansu 2017-09-12 05:37:20
您需要单独定义onItemSelected()每个微调。否则,如果从任何一个spinners中选择了任何内容,代码将被执行。
newCategory.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
String selCat = newCategory.getItemAtPosition(arg2).toString();
if (selCat != "New")
{
loadSpinnerData(topic);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
newTopic.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
loadSpinnerData()
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
- 1. 价值微调XML解析
- 2. 微调值根据父微调值的变化而变化
- 3. 价值变动
- 4. 如何获得片段中微调器改变的价值?
- 5. 自动计算的jQuery微调的价值
- 6. 微调值textView自动android
- 7. 微调值更改当滚动微调器
- 8. 将微调值保存到变量中
- 9. 活动打开时更新微调值?
- 10. 微调值到ListPreference
- 11. 微调数组值
- 12. 改变价值
- 13. 价值变量
- 14. 如何添加额外的价值微调器
- 15. 如何从微调选择价值,然后检查到MySql
- 16. jQuery Spinner - 从微调框中获取价值
- 17. 选择适当的价值的微调accroding我的类
- 18. 如何让JSON ID和价值填充微调
- 19. 当活动发生变化(生命周期相关)时,Android微调不保留价值
- 20. 动态微调器
- 21. jQuery的。点击价值变动
- 22. 启动价值变化事件
- 23. XML元素汽车价值变动
- 24. LINQ C#为什么价值变动
- 25. iBeacon显示动态小调价值
- 26. 拉动价值
- 27. 从微调器获取价值,并根据该值更改文本视图
- 28. Android - 如何显示有价值的微调框,但显示不同的值
- 29. 在微调框中的值
- 30. Android - 微调器位置值
难道不使用“implements”就可以实现吗? – 2011-03-07 13:57:45
我不明白这个问题。您可以创建一个实现接口的匿名类,不过是你必须在某个时候创建一个实现,为了接口,其添加为微调侦听器的对象。 – I82Much 2011-03-07 17:59:46