본문 바로가기

ListView2

FragmentPaper에서 ListView가 매번 초기화되지 않도록 하기 대부분의 앱은 탭과 리스트로 구성된다. 많은 정보를 간편하면서도 체계적으로 보여줄수 있기 때문이다. Android에서 이러한 구조는 보통 FragmentPaper에 ListView를 넣어 구현한다. FragmentPaper는 메모리 관리를 위해 사용자가 보고 있는 페이지과 양옆의 페이지만 유지하고 나머지는 죽이는데 내 경험상 완전히 죽이는것이 아니라 Fragment의 생명주기만 끝내는것 같다. 결과적으로, 페이지를 옮길때마다 Fragment가 초기화되어 그 안의 ListView 내용도 다 지워진다. 이를 방지하는 방법이 따로 있을지도 모르겠지만 나는 다음과 같이 onCreateView()에 몇줄을 코딩해 해결하곤 한다. Fragment의 생명주기는 다시 시작되지만 Class 자체의 객체변수들은 그대로 남.. 2019. 5. 23.
ListView에 EditText를 넣을때 반드시 살펴봐야 할점 설정 페이지를 만들때 ListView로 EditText를 넣고 싶은 유혹에 빠진다 하지만 ListView의 특성상 사실 EditText는 적합하지 않다. ListView는 각각의 row뷰를 재사용하여 메모리를 아끼기 때문에 EditText의 변경값을 일일이 저장해 두었다가 다시 불려줘야 한다. 그리고 이때 진짜 주의할게 하나 있다. 변경 리스너의 중복을 방지하는 것이다. 반드시 재사용 뷰의 예전 리스너를 지워줘야 한다. 안그러면 예전 목록들과 뒤죽박죽 되버린다. 이해를 돕기 위해 리스너를 지우지 않았을때와 지웠을때도 비교해 보았다. public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstan.. 2017. 9. 11.