【发布时间】:2015-01-15 12:29:45
【问题描述】:
我创建了一个由标志填充的微调器,并为每个标志创建了一个国家代码:
但我遇到了一个问题。当我删除我的 editText 上的国家代码时,我希望能够返回到微调器并再次单击旗帜并显示我刚刚删除的正确国家代码。
但目前我无法再次触发事件OnItemSelectedListener。
- 用例:
以英国国旗和代码为例,我通过微调器选择英国国旗,触发我的事件 OnItemSelectedListner 并将 +44 国家代码设置为我的编辑文本。
然后我错误地删除了它,所以我要回到我的微调器上我在我的英国国旗上单击了一个新时间但没有任何反应,我的事件 OnItemSelectedListner 是没有触发,而我点击了我的标志。
此时,如果我单击列表中的另一个单位,将显示其代码,我可以返回 UK flag 单击它以显示代码,这一次它可以工作。
我试图弄清楚为什么我无法触发此事件:OnItemSelectedListner 第二次。好像我的项目已经被选中,此时无法进行任何活动。
我的代码:
new AsyncPhoneInitTask(currentActivity.this).execute();// fetch data to fill spinner
countrySpinner = (Spinner) findViewById(R.id.spinner);
countrySpinner.setOnItemSelectedListener(onItemSelectedListener);
countryAdapter = new CountryAdapter(currentActivity.this);
countrySpinner.setAdapter(countryAdapter);
// I want to trigger this event a second time
protected AdapterView.OnItemSelectedListener onItemSelectedListener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Country c = (Country) countrySpinner.getItemAtPosition(position);
// My code
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
};
有没有办法解决我的问题?
我想要一个事件 setOnItemClickListener 而不是 setOnItemSelectedListener。因为这就是为什么我不能重新选择两次相同的项目的原因,它已经被选中了。
【问题讨论】:
-
您能否展示用于重新打开或重新初始化微调器的代码?如果第二次没有 onItemSelectedListener 附加到微调器,那么这可能是您的问题的根源。
-
@FrankD。我没有任何代码来重新初始化我的微调器。我只想有一个事件 setOnItemClickListener 而不是 setOnItemSelectedListener。因为这里是我不能重新选择同一个项目的原因,它已经被选中了。
标签: android spinner onitemselectedlistener