我做了类似的事情之前,我用计数值。使用父适配器对象不完整,因为刷新视图或再次调用getView()
时可能会出现问题。
因此,我建议使用数组计数器。
首先,在全局范围内定义适配器数组。
private int isInitializedView[];
然后在getView()上初始化它。
isInitializedView[position] = 0;
在选择侦听器中,如果它已经初始化,就做一些你想要的东西。
holder.mySpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
isInitializedView[position]++;
if(isInitializedView[position] > 1) {
// do someting that you want
}
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {}
});
(请注意,isInitializedView[position]++;
后可if()
程序中来,只有触发事件时,这个值是>0
。这是你的选择。)
如果用户按动的第一个项目的上面的代码没有效果。 – matheuslf 2013-07-12 19:59:56
我正面临同样的问题 – theLazyFinder 2016-07-20 10:24:56