목록 항목 내부에서 포커스를 전환 할 수있는 D 패드로 Listview 작업을 수행했습니다. 이것은 어떻게 해결할 수 있습니다. 먼저 목록보기에 항목을 집중시킬 수있게하십시오.
참고 : 나중에 코드에서 ItemsCanFocus를 false로 설정하려고하면 다시 true로 설정하더라도 목록 항목에서 포커스를 얻을 수 없습니다.
mDpadListView.setItemsCanFocus(true);
그러면 현재 선택된 목록 항목을 추적하는 필드가 필요합니다. ViewHolder를 Adapter의 listItem 태그에 넣습니다.
mDpadListView.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
if (view.getTag() != null) {
DpadListAdapter.ViewHolder holder = (ViewHolder) view.getTag();
if (holder.shortCut != null && holder.shortCut.isShown()) {
currentSelectView = view;
} else {
currentSelectView = null;
}
} else {
currentSelectView = null;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
셋째, D- 패드의 위쪽, 아래쪽, 왼쪽, 오른쪽 키를 제어하기 위해 Activity Method에서 onKeyDown()을 재정의하십시오.
사용자가 D 패드에서 오른쪽 버튼을 누르면 listview를 clearFoucs()로 보내고 포커스를 얻기 위해 ImageView 내부를 보겠습니다.
사용자가 위, 아래 또는 왼쪽을 누르면 목록 항목의 ImageView에서 초점이 지워지고 listView에서 다시 초점을 얻습니다.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_RIGHT:
if (currentSelectView != null) {
DpadListAdapter.ViewHolder holder =
(ViewHolder) currentSelectView.getTag();
mDpadListView.clearFocus();
holder.shortCut.setFocusable(true);
holder.shortCut.requestFocus();
return true;
}
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_DPAD_UP:
case KeyEvent.KEYCODE_DPAD_DOWN:
if (currentSelectView != null) {
DpadListAdapter.ViewHolder holder =
(ViewHolder) currentSelectView.getTag();
if (holder.shortCut.hasFocus()) {
holder.shortCut.clearFocus();
holder.shortCut.setFocusable(false);
mDpadView.requestFocus();
return true;
}
}
break;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
안녕하세요, 도움이 필요합니다. D 패드가있는 항목을 선택한 다음 배경색을 변경하는 방법을 알고 싶습니다. – wdyz
항목의 배경 이미지에 상태 목록 드로어 블을 사용해야합니다. android : state_focused = "true"보통 상태와 다른 이미지를 제공하십시오. ref : http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList – henry74918
안녕하세요, currentSelectView는 무엇입니까 – Andrain