Android微调器两次选择相同的项目

时间:2016-08-02 16:00:16

标签: java android android-spinner

我知道很多人已经问过这个问题,但我还是有问题。如果我在spinner itemonclicklisterner中单击相同的项目未触发。我在谷歌找到了一些代码。像

public class SpinnerTrigger extends Spinner {

public SpinnerTrigger(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

@Override
public void setSelection(int position, boolean animate) {
    ignoreOldSelectionByReflection();
    super.setSelection(position, animate);
}

private void ignoreOldSelectionByReflection() {
    try {
        Class<?> c = this.getClass().getSuperclass().getSuperclass().getSuperclass();
        Field reqField = c.getDeclaredField("mOldSelectedPosition");
        reqField.setAccessible(true);
        reqField.setInt(this, -1);
    } catch (Exception e) {
        Log.d("Exception Private", "ex", e);
        // TODO: handle exception
    }
}

@Override
public void setSelection(int position) {
    ignoreOldSelectionByReflection();
    super.setSelection(position);
}

}

我使用此代码创建了类。但我的问题是我需要调用这个类。我的意思是从我需要调用的主要活动和我需要调用哪个(ignoreOldSelectionByReflection方法或setSelection)。我试过谷歌所有人都给了这个课程,但没有人解释这个。所以任何人都可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

在这种情况下,您找不到解决问题的方法:

如果您不需要自定义微调器类,只需忘记它即可。

您需要做的就是以编程方式在微调器中选择一个项目(与已选择的项目不同),然后第二个选择将被触发。微调器的常见用法是在列表顶部添加一个“”,以使一个空项目成为默认选择。因此,最好重置该项目的选择索引(索引位置为0):

Spinner spinnerMyList = findViewById(R.id.spinnerMyList);
spinnerMyList.setSelection(0);

希望对您有帮助!

答案 1 :(得分:-2)

使用这个方法。这对我有用

Tasks API