7

我有一个带有 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.

我需要删除此限制,并且我希望在用户选择相同元素时也调用回调。怎么做?
有人做过同样的事情吗?

任何关于这个的想法都会很明显..

4

3 回答 3

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为适配器中的每个视图实现。

于 2012-06-25T04:56:14.023 回答
1

我遇到了同样的问题,并环顾四周。可能有多种方法可以使此功能正常工作,但扩展微调器对我有用。你可以做一些类似于我在这里找到的事情。

因此,不要使用默认的 Android 微调器扩展它并向其添加一些将触发您的回调方法的代码。

我想补充一点,在 Spinner 上使用 setOnItemClickListener 将引发异常,如文档中所述:

A spinner does not support item click events. Calling this method will raise an exception.
于 2013-03-26T14:19:50.053 回答
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;
}
}
于 2017-12-02T07:28:21.670 回答