Android为TV端助力之解决setOnItemSelectedListener一进来就自动执行一次的问题
程序员文章站
2022-05-24 19:27:20
我们经常会遇到listview或者其他view设置setOnItemSelectedListener监听时,一加载界面,setOnItemSelectedListener监听就会自动执行一遍,导致你第一次移动上去的时候setOnItemSelectedListener监听就不会走的 所以我们采用自定 ......
我们经常会遇到listview或者其他view设置setonitemselectedlistener监听时,一加载界面,setonitemselectedlistener监听就会自动执行一遍,导致你第一次移动上去的时候setonitemselectedlistener监听就不会走的
所以我们采用自定义listview,主动来调用setonitemselectedlistener监听回调,代码如下
public class mylistview extends listview {
private int lastposition = 0;
public mylistview(context context) {
super(context);
}
public mylistview(context context, attributeset attrs) {
super(context, attrs);
}
public mylistview(context context, attributeset attrs, int defstyleattr) {
super(context, attrs, defstyleattr);
}
// 一个 item 选中的时候,总是会触发 setselection 方法
// 所以在这个方法中,我们记录并检查上一次的selection position 就行了,如果是相同的,手动调用监听即可
@override
public void setselection(int position) {
super.setselection(position);
if (position == lastposition){
getonitemselectedlistener().onitemselected(this,getselectedview,position,0);
}
lastposition = position;
}
}