«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
09-22 01:51
관리 메뉴

DevTzu

java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0 본문

study

java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0

DevTzu 2012. 4. 11. 13:17
반응형


Error Message

E/AndroidRuntime(16896): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0


커스텀 ExpandableListView로 Group Row를 선택시 하위 Depth에 있는 Child Row가 나타나는 형태의 리스트뷰이다.

여기서 다시 다른 Group Row를 선택하면 역시 Child Row가 나타난다.

여기서 나는 두번째 Child Row가 나타날때 첫번째 나왔던 Child Row를 닫아주는 동작을 하는 리스트뷰를 원하였다.



그래서 다음과 같은 setOnGroupClickListener에 닫아주는 code를 작성하였다.

mIndexlist.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
     public boolean onGroupClick(ExpandableListView parent, View v, 
                                             int groupPosition, long id) {

          if(mSelectedRowNum != 0)
               mIndexlist.collapseGroup(mSelectedRowNum);

          mSelectedRowNum = groupPosition;

          return false;
     }
});



실형결과 Exception 발생

E/AndroidRuntime(16896): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0



이 문제를 해결하기위해 setOnGroupExpandListener를 사용해야 된다는 것을 구글링을 통해 알수 있었다.

그래서 다음과 같은 code를 통해 원하는 동작을 만들어 낼수 있었다.

mIndexlist.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
     public void onGroupExpand(int groupPosition) {

          int len = ceAdapter.getGroupCount();

          for (int i = 0; i < len; i++) {
               if (i != groupPosition)
                    mIndexlist.collapseGroup(i);
          }
     }
});




참고 링크

http://qtcstation.com/2011/03/working-with-the-expandablelistview-part-1/


반응형
Comments