Android:如果已选中,则点击的微调器项目不起作用

时间:2012-06-25 04:34:25

标签: android android-spinner

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

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

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

3 个答案:

答案 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;
}
}