欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

}