Android為TV端助力之解決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;
}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM