program tip

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

radiobox 2020. 12. 30. 08:02
반응형

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


다음과 같이 설정된 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);
}

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


OnItemSelectedListener목록 항목 클릭이 아닌 목록 항목 선택을 수신합니다.

이 경우 선택은 장치의 트랙 패드를 사용하여이 항목에 초점을 이동하는 것으로 볼 수 있습니다.

원하는 동작을 얻으려면 OnItemClickListener.


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


첫째, 당신은 설정해야 ChoiceMode하고, 의 ListView에서 선택했기 때문에 이벤트가 수락하지 않습니다 setOnItemSelectedListener에서 registed AdapterView방법, 그리고 콜백을 handleDataChanged()하지만, 클래스 AbsListView재정이 방법 결코 콜백OnItemSelectedListener

여기에 이미지 설명 입력

이 방법으로 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());

        }
    });

참조 URL : https://stackoverflow.com/questions/2454337/why-is-my-onitemselectedlistener-not-called-in-a-listview

반응형