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

listview에 인접한 view의 margin을 변경하면 listview가 refresh가 되는데 이걸 막는 방법이 있을까요?

0 추천
|RelativeLayout|

|ListView|

이런식으로 화면에 붙어 있다가 리스트뷰의 스크롤에 따라서 상단에 붙은 RelativeLayout을 숨기기도 하고 보이게도 하고 있습니다. 이때 이 숨긴다는 것이 RelativeLayout의 Margin Top을 마이너스로 주어서 화면의 바깥으로 뺐다가 다시 들어오게 하는 형식인데요.

ListView는 android:layout_below으로 상단의 RelativeLayout을 지정하고 있어 RelativeLayout이 위로 올라가면 리스트뷰도 따라서 자동으로 크기가 커지는 형태로 되어있습니다.

그런데 이렇게 상단에 붙은 RelativeLayout이 사라졌다가 돌아올때 마다 ListView가 깜빡이면서 refresh가 되어 버리는데

이런 리스트뷰의 화면갱신을 막을수 있는 방법이 있을까요?
Style_jG (220 포인트) 님이 2013년 4월 19일 질문

2개의 답변

0 추천
없는 것으로 알고 있습니다.

뷰가 화면 상에서 위치 내용 등의 상태가 변경되면 다시 그리게 되는데

ListView가 다시 그려지면 자동으로 getView가 호출되어 item도 다시 그려지게 됩니다.
appa (3,380 포인트) 님이 2013년 4월 19일 답변
appa님이 2013년 4월 19일 수정
덕분에 문제 처리하였습니다 감사합니다~^^
0 추천
리스트뷰처럼 Adapter를 이용하는 뷰는 사이즈, 위치를 고정으로 디자인하시는게 좋습니다.

이유는 리스트뷰자체가 변경되거나 item의 사이즈, 위치가 변경되어도 표시되는 전 item가 전부 getView되기 때문에

리스트뷰의 변경이 일어나면 item도 변경이 일어나므로 실질적으로 getView가 몇번 호출되지 안 수 없을 정도로

많이 불려집니다.

 

디자인 변경을 추천합니다.
뚱땡이토끼 (1,440 포인트) 님이 2013년 4월 19일 답변
감사합니다. 덕분에 다른 방법으로 우회하는 방식으로 처리하였습니다.
...