如何解决重新选择项目时的 Android Spinner
我的布局中有一个 spinner。目前,一切正常,但我需要在重新选择项目时做一些事情。
有没有办法知道微调项被重新选择了?。
public void onItemSelected(AdapterView<?> parent,View view,int pos,long id) {
// An item was selected. You can retrieve the selected item using
}
public void onnothingSelected(AdapterView<?> parent) {
// Another interface callback
}
解决方法
我不知道这个想法是否可以帮助您,但是您可以尝试使用您在“onItemSelected”中获得的 pos 或 id 值创建一个 ArrayList,并在您读取 ArrayList 搜索它的方法内部......像这样:
ArrayList<Integer> positions = new ArrayList();
public void onItemSelected(AdapterView<?> parent,View view,int pos,long id) {
for(int posit : positions){
if(posit==pos){
//item reselected
}
}
positions.add(pos);
}
,
我通过此自定义微调器代码在 onItemSelected
中实现了重新选择回调。
参考:https://stackoverflow.com/a/11323043/9909365
import android.content.Context;
import android.util.AttributeSet;
import android.widget.Spinner;
/** Spinner extension that calls onItemSelected even when the selection is the same as its previous value */
public class NDSpinner extends Spinner {
public NDSpinner(Context context)
{ super(context); }
public NDSpinner(Context context,AttributeSet attrs)
{ super(context,attrs); }
public NDSpinner(Context context,AttributeSet attrs,int defStyle)
{ super(context,attrs,defStyle); }
@Override
public void setSelection(int position,boolean animate) {
boolean sameSelected = position == getSelectedItemPosition();
super.setSelection(position,animate);
if (sameSelected) {
// Spinner does not call the OnItemSelectedListener if the same item is selected,so do it manually now
getOnItemSelectedListener().onItemSelected(this,getSelectedView(),position,getSelectedItemId());
}
}
@Override
public void setSelection(int position) {
boolean sameSelected = position == getSelectedItemPosition();
super.setSelection(position);
if (sameSelected) {
// Spinner does not call the OnItemSelectedListener if the same item is selected,getSelectedItemId());
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。