2013-01-08 4 views
0

다중 선택 모드에서 ListView이 있습니다. 항목을 클릭 할 때마다 해당 이벤트를 처리하려고합니다. 이를 위해 다음 논리를 사용합니다. 항목이 선택됩니다 때마다왜 getCheckedItemPositions()가 역 진리 값을 반환합니까?

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    OverlayTypes selected = (OverlayTypes) getListAdapter().getItem(
      position); 
    boolean isChecked = getListView().getCheckedItemPositions().valueAt(
      position); 
    Log.i(TAG, position+" is "+isChecked); 
} 

는하지만, getChecked 그 반대의 경우도 마찬가지 '거짓'과 '진실'입니다. 왜?

+0

정확히 원하는 것, 체크 된 상태 또는 체크 된 위치가 필요합니까? –

답변

0

내 문제는 내 사용자 지정 어댑터의 getView() 메서드를 얻는 데 지나치게 야심적이었습니다. getView()에서 나는 Checkable 뷰를 내 설정에있는 값으로 설정하려고 시도했지만 체크 된 상태가 어댑터 내에서 처리되는 것을 인식하지 못했습니다.

그게 맞는 말이군요.

1

타이밍에 문제가있을 수 있습니다. 확인란을 선택하면 LogCat으로 인쇄 한 후에야 값이 업데이트 될 수 있습니다.

는 글로벌 복사본 대신 로컬 복사본을 읽고 도움이 있는지 확인하기 위해

boolean isChecked = l.getCheckedItemPositions().valueAt(position); 

에 라인

boolean isChecked = getListView().getCheckedItemPositions().valueAt(position); 

을 변경해보십시오.

관련 문제