반응형
내 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());
}
});
반응형
'program tip' 카테고리의 다른 글
Bluebird로 Node의 child_process.exec 및 child_process.execFile 함수를 약속하는 방법은 무엇입니까? (0) | 2020.12.30 |
---|---|
* ngFor에서 동적 ID를 설정하는 방법은 무엇입니까? (0) | 2020.12.30 |
WebBrowser 전체 페이지 로딩 감지 (0) | 2020.12.30 |
Sun / Oracle JVM의 기본 XSS 값은 어디에서 찾을 수 있습니까? (0) | 2020.12.30 |
asp.net mvc 4에서 datetime 형식 지정 (0) | 2020.12.30 |