마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

listview/getview에서의 IndexOutOfBoundsException 문제

0 추천
arraylist에 리스트뷰 한 줄마다 있는 총 10개의 editText 의 값을 배열값으로 저장해서 getText,setText해주려고 합니다.

getview내에서 editText를 클릭하면 for문으로 10번 반복해서 전체적인 editText값을 보여주려고 하는데요,

현재 레이아웃에서 스크로를 내리지 않고 초기 화면그대로 냅두면 총 5개의 에디트텍스트가 보입니다.

0번부터 4번까지만 보인다는것이고, 스크롤로 조작하면 5개씩 보이되, 1~6/2~7 이렇게 보이게 됩니다.

그때문에 그런지, 에러 로그를 확인하니

java.lang.IndexOutOfBoundsException: Invalid index 5, size is 5 라고 뜨네요..

getview때문에 다섯개만 보여서 이러는것같습니다.

전체적으로 10개가 출력되길 원하는데 getview상 현재 5개밖에 보이지 않으니까요.

getview밖으로 출력을 해야하나요ㅠ?
anci (19,950 포인트) 님이 2015년 1월 12일 질문

2개의 답변

+1 추천
 
채택된 답변
IndexOutOfBoundsException 가 나는 이유는 리스트뷰에서는 화면내에서만 보여지는것만 유효하기때문이지요.

getview의 시작지점에서 로그로 position을 찍어보면 쉽게 이해되실것입니다.

방법을 바꾸시는게 좋으실듯..

 

갯수가 10개로 고정되어있다며 굳이 리스트뷰를 사용할필요없이

스크롤뷰에 add 하셔서 사용하셔도 되실듯...
nicehee (73,100 포인트) 님이 2015년 1월 12일 답변
anci님이 2015년 1월 12일 채택됨
감사합니다ㅠㅠ이것만 끝내면 전체적으로 완성되는건데, 다른방법으로 하자니 시간이 촉박하네요..그래도 알아봐야겟네요..답변 감사합니다.
+1 추천
getView자체가 화면에 View가 보일 때 마다 불립니다.

EditeText값을 Adapter적용 할 때 같이 ArrayList로 저장해 놓고 보여주셔야할듯 하네요.
노예의집 (23,370 포인트) 님이 2015년 1월 12일 답변
...