我有Spinner的名字:turListe。它从数据库中获取输入值。当我开始我的活动时,onOtemSelected会自动启动。我该如何解决这个问题?
turListe.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
String turAdi;
Intent intent = new Intent(MainScreen.this, TarifListe.class);
Bundle bundle = new Bundle();
turAdi = arg0.getItemAtPosition(arg2).toString();
bundle.putString("turad", turAdi);
intent.putExtras(bundle);
startActivity(intent);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
答案 0 :(得分:1)
我使用相关微调器旁边的按钮解决了我的问题。我知道这不是一个完美的解决方案,但它在短时间内解决了我的问题。
答案 1 :(得分:1)
我想我在全局声明中用布尔标志作为静态解决了它。
MyOnItemSelectedListener onItemSelectedListener = new MyOnItemSelectedListener(false);
sp_choose1.setOnItemSelectedListener(onItemSelectedListener);
sp_choose2.setOnItemSelectedListener(onItemSelectedListener);
onItemSelectedListener.getDataforList();
使用此类并切换布尔值以启用或禁用所调用的onItemSelectedListener。
private class MyOnItemSelectedListener implements OnItemSelectedListener {
public MyOnItemSelectedListener(boolean bool){
spinner_bug = bool;
}
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();
if(spinner_bug)
getDataforList();
}
public void onNothingSelected(AdapterView parent) {
// Do nothing.
}
private void getDataforList(){
//dosomething
}
}
答案 2 :(得分:0)
这是一个已知问题。我相信一种可能的解决方法是在调用setOnItemSelectedListener()
之前在微调器上设置适配器。
如果无法做到这一点,那么您可以使用isAdapterSet
之类的布尔值,并使用onItemSelected()
方法检查它是否应该忽略选择事件。
答案 3 :(得分:-1)
仅使用OnItemSelectedListener()而不是AdapterView.OnItemSelectedListener()