물에 살고싶은 개발자

[Custom List View] 리스트뷰에서 EditText 쓸때 포커스 튀는 문제 본문

Android

[Custom List View] 리스트뷰에서 EditText 쓸때 포커스 튀는 문제

돼지사랑 2017. 10. 16. 22:33

리스트뷰에다가 에딧텍스트를 넣으면 포커스가 튄다.

때문에 제대로된 핸들링도 되지 않는다.


다행히 이 문제를 해결하기 위해 스택오버플로우에 수많은 질문답변글처럼


필터니 뭐니 다른거 쓸 필요가 없었다.

물론 좀 더 디테일하게 들어가면 필요할지도 모르지만 일단 간단하게 쓰자면 그럴필요 없다.


일단 그냥 보통 뷰들을 사용하듯이 리스트뷰에 에딧텍스트를 넣었는데 테스트해보니


포커스가 튄다. 막 튄다. 값도 지멋대로 왓다갓다.

체크박스정도는 뷰홀더패턴으로 처리하면 간단하게 해결되는데,


에딧텍스트는 처음 리스트뷰를 접했을때처럼 미쳐 날뛰기 시작한다.


이 문제는 놀랍게도 xml과 매니페스트에 한줄씩 추가해주면 미쳐날뛰는 에딧텍스트의 포커스문제가 해결된다.


일단 매니패스트에서 리스트뷰를 사용하는 액티비티에 아래 속성을 추가해주자

android:windowSoftInputMode="adjustPan"



그리고 에딧텍스트가 포함된(미쳐날뛰는) 리스트뷰가 있는 xml파일로 가서

해당 리스트뷰에 아래 속성을 추가해주자

android:descendantFocusability="afterDescendants"


끝이다.


이것만으로도 로직을 복잡하고 고도화시켜 해결할 필요없이 기존에 뷰홀더패턴을 이용한 간단한 로직으로도 문제없이 작동한다.


끝!


참고 : http://coderzpassion.com/android-custom-listview-with-edittext/

Comments