내 onitemselectedListener가 ListView에서 호출되지 않은 이유는 무엇입니까?
-
20-09-2019 - |
문제
다음과 같은 설정인 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
이 방법으로 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());
}
});
제휴하지 않습니다 StackOverflow