我知道很多人已经问过这个问题,但我还是有问题。如果我在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)。我试过谷歌所有人都给了这个课程,但没有人解释这个。所以任何人都可以帮我解决这个问题。
答案 0 :(得分:0)
在这种情况下,您找不到解决问题的方法:
如果您不需要自定义微调器类,只需忘记它即可。
您需要做的就是以编程方式在微调器中选择一个项目(与已选择的项目不同),然后第二个选择将被触发。微调器的常见用法是在列表顶部添加一个“”,以使一个空项目成为默认选择。因此,最好重置该项目的选择索引(索引位置为0):
Spinner spinnerMyList = findViewById(R.id.spinnerMyList);
spinnerMyList.setSelection(0);
希望对您有帮助!
答案 1 :(得分:-2)
使用这个方法。这对我有用
Tasks API