public class MessageListView extends ListView {
public MessageListView(Context context) {
super(context);
}
public MessageListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MessageListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public MessageListView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
//1、通過判斷ListView當前被選擇item的position,如果是最後一條就setSelection(0);可達到循環的目的
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (KeyEvent.KEYCODE_DPAD_DOWN == event.getKeyCode()) {
setSelection(getNextPosition());
return true;
}
}
//KeyEvent.ACTION_UP
return super.dispatchKeyEvent(event);
}
//2、down事件到dispatchKeyEvent時,找下一個否符合要求item的position,再setSelection()
// 達到"略過一些item,跳到指定item的效果"
private int getNextPosition() {
// for->
// getSelectedItemPosition()
// getAdapter().getCount()
// getAdapter().getItemViewType()
// return 符合要求返回;
return getSelectedItemPosition() + 2 < getAdapter().getCount()
? getSelectedItemPosition() + 2
: getAdapter().getCount() - 1;
}
}
按鍵實現ListView循環滾動、ListView item焦點處理(向下按鍵使ListView跳轉到指定Item的一種思路)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.