我們經常會遇到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;
}
}