이자식이 에러를 자꾸 내고 그러네요..
tempLy는 동적 Layout이구요
ly 는 xml에서 정해주고 전역변수로 쓰고있는데
테스트해보니 전역변수가 관계는 없구
for문 돌때 중복?이 되는건지 .. 그렇다고 DB의 이미지들을 다 보여줘야하는데
for문 돌때마다 ly를 removeAllViews() 해줄수도 없구요..
어떻게 해야하나요 ㅠㅠ 3일째 붙들고 낑낑대고 있답니다
도와주세요 ㅠㅠ
중언부언 한것같아 다시 정리합니다.
tempLy 란 레이아웃이 ly 레이아웃의 자식뷰로 설정이 되는데요.
포문이 두번째돌때에 tempLy 의 차일드뷰를 모두 제거 한다고해도 객체로서의 변경은 생기지 않고 이미 사용되었던 tempLy 레이아웃을 가리키고있습니다.
이 레이아웃은 ly 레이아웃을 당연하게도 부모뷰로 가지고있구요.
안드로이드 ui 구조상 하나의 뷰에는 하나의 부모뷰를 가질수 밖에 없는데 이미 부모뷰가 있는 레이아웃에 부모뷰를 설정하려고 하니 에러가 발생하는 것 입니다.
해결방법으로는 두가지가 있을수 있겠습니다.
첫번째로 마지막줄의 ly.addView(tempLy); 부분을 포문밖으로 이동하여 한번만 추가되도록 하는 방법이 있습니다.
그렇지만 이방법은 동적으로 생성되는 뷰들을 다무시하게 되므로 사용할수 없을것으로 보입니다.
두번째 방법은 새로운 레이아웃 객체를 생성해 주는 것입니다.
tempLy 객체를 생성한 부분을 포문의 안에다 넣어서 새 객체를 생성하도록하면 부모뷰가 정해지지않은 레이아웃을 생성하도록하여
원하시는 동작을 가능하도록 할것으로 보입니다.
아! 보니까요. tempLy 란 레이아웃을 계속 재사용 하는것으로 보입니다.
위의 코드상으로보면 tempLy 내부를 비워주거나 하는거와 상관없이 tempLy 의 상위뷰가 ly 로서 계속 추가되도록 되어있습니다.
그러니까 현재 tempLy 상위가 ly 로 설정되어있다면 다시 상위뷰 설정을 넣으려면 새로 레이아웃을 정의 하던지
ly.addView(tempLy); 이부분을 포문 밖으로 빼는 방법으로 진행하시던지 하면 해결될 것 같습니다.