내 onitemselectedListener가 ListView에서 호출되지 않은 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2454337

문제

다음과 같은 설정인 ListView를 사용하고 있습니다.

<ListView android:id="@android:id/list" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:longClickable="false"
    android:choiceMode="singleChoice">
</ListView>

내 코드에서는 다음과 같은 ListView에 onitemSelectedListener를 추가합니다.

getListView().setAdapter(adapter);
getListView().setOnItemSelectedListener(this);

내 활동은 청취자를 그런 식으로 구현합니다.

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    Log.d("Tag", "ListItemSelected: Parent: " + parent.toString() + " View: "
            + view.toString() + " Position: " + " Id: " + id);
}

내 희망은,이 디버그 출력이 목록에서 무언가를 클릭하는 순간을 볼 것이라는 것이 었습니다. 그러나 Debug 출력은 Logcat에 결코 표시되지 않습니다.

도움이 되었습니까?

해결책

그만큼 OnItemSelectedListener 목록 항목 선택에 대해서는 목록 항목 클릭이 아닙니다.

이 경우 선택은 장치의 트랙 패드 로이 항목에 초점을 맞추는 것으로 볼 수 있습니다.

원하는 행동을 얻으려면 사용해야합니다 OnItemClickListener.

다른 팁

터치 가능 장치에서 손가락으로 테스트를 거치기 때문입니다. ~ 안에 터치 모드, 초점과 선택은 없습니다. 선택이 필요한 UI는 라디오 버튼과 같은 다른 유형의 위젯을 사용해야합니다.

처음에는 설정해야합니다 ChoiceMode,그리고,ListView에서는 선택한 이벤트가 수락하지 않습니다. setOnItemSelectedListener 등록되었습니다 AdapterView메소드의 콜백 handleDataChanged(), 그러나 수업 AbsListView 이 메소드를 무시하고 콜백을하지 마십시오 OnItemSelectedListener

enter image description here

이 방법으로 seleteditem을 얻을 수 있습니다 setOnItemClickListener

     mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.e("TAG", "onItemClick: " + position);
            SparseBooleanArray positions = mListView.getCheckedItemPositions();
            Log.e("TAG", "onItemSelected: " + positions.toString());

        }
    });
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top