我有一个带有onItemSelected交互的Spinner,但是Api规范如何说明:
This callback is invoked only when the newly selected position is different from the
previously selected position or if there was no selected item.
我需要删除此限制,并且我希望如果用户选择相同的元素也会调用回调。怎么做?
有人做过同样的事吗?
任何关于这一点的想法都会很明显......
答案 0 :(得分:1)
i want that the callback is invoked also if the user select the same element. How to do that?
为Spinner设置OnItemClickListener
将抛出异常并使用ItemSelectedListener
如果用户单击所选/相同的元素,则不会通知您。
我认为克服此限制的唯一方法是为Spinner项使用CustomAdapter,并为适配器中的每个视图实现setOnClickListener
。
答案 1 :(得分:1)
我有同样的问题并且四处寻找。可能有多种方法可以使用此功能,但扩展微调器对我有用。你可以做一些类似我发现here的事情。
因此,不使用默认的Android微调器扩展它并添加一些代码来触发你的回调方法。
我想补充一点,在Spinner上使用setOnItemClickListener会抛出一个异常,如文档中所述:
A spinner does not support item click events. Calling this method will raise an exception.
答案 2 :(得分:0)
在这种情况下,你必须制作一个自定义微调器:试试这个
public class MySpinner extends Spinner{
OnItemSelectedListener listener;
public MySpinner(Context context, AttributeSet attrs)
{
super(context, attrs);
}
@Override
public void setSelection(int position)
{
super.setSelection(position);
if (position == getSelectedItemPosition())
{
listener.onItemSelected(null, null, position, 0);
}
}
public void setOnItemSelectedListener(OnItemSelectedListener listener)
{
this.listener = listener;
}
}