본문 바로가기

notifyDataSetChanged

[Android] Cannot call this method while RecyclerView is computing a layout or scrolling Cannot call this method while RecyclerView is computing a layout or scrolling 위 에러는 RecyclerView 에서 notify 관련 함수(notifyDataSetChanged, notifyItemChanged 등등)을 사용할 때 자주 발생 한다.무슨 에러 일까.... RecyclerView 가 레이아웃을 계산 하고 있거나 스크로링 하는 동안 에는 사용 할 수 없다! 라는 문구이다. 그래서 난 UI 쓰레드(runOnUiThread) 를 사용 하면 되나 했더니.. 그것도 안되고 에러를 품어 낸다. 결국 구글링을 열심히 해봤다. 대답은 대부분이 Handler를 만들어 post로 던져라 이다.참고 : http://stackoverflow.com/a.. 더보기
[Android] RecyclerView Adpater Refresh RecyclerView를 사용한 후, Adapter를 계속 그냥 두는게 아니라 데이터가 변경이 되었을 때 항상 갱신을 해야 합니다.이전 ListView나 GridView를 사용했을 때 저는 모든 갱신을 notifyDataSetChanged 함수만 썼습니다.(제가 경력이 그리 많지 않아서..^^a) RecyclerView를 쓸때는 좀 더 다양하게 갱신을 줄 수 있습니다. ## 추신 : 여기는 제가 직접 테스트를 하면서 생각된 기능으로 설명한 것입니다. API 의도와 틀릴 경우 언제든지 댓글 달아주세요^^ 수정 하겠습니다. notifyDataSetChanged : 데이터가 전체 바뀌었을 때 호출. 즉, 처음 부터 끝까지 전부 바뀌었을 경우 notifyItemChanged : 특정 Position의 위치만 바.. 더보기
[Android] FragmentPagerAdapter 갱신!!! FragmentPagerAdapter를 사용할 경우 ViewPager와 연동을 합니다.이때 특정 Page에 Fragment를 갱신하고 싶어 모두 알고 계시는 notifyDataSetChanged 함수를 호출 합니다. 하지만! 위 함수를 호출 하더라도 갱신이 되지 않죠!!이럴 경우 아래와 같은 방법을 해보세요. 1. FragmentPagerAdapter 대신 FragmentStatePagerAdapter를 사용한다.2. getItemPosition 함수를 오바라이딩 한다.3. getItemPosition 함수를 이용하여 특정 Fragment만 갱신 한다. @Override public int getItemPosition(Object object) { if (여기는 특정 Fragement를 파악할 수 있는 .. 더보기