본문 바로가기
Android

recyclerView 데이터가 바뀌었을 때 알 수 있는 방법

by 루에 2015. 6. 2.
반응형

registerAdapterDataObserver를 어댑터에 연결해주면 된다. 데이터가 바뀌거나 제거되거나 새로 추가되거나 이동됐을 때를 알 수 있다.(onItemRangeChanged()는 다른 것들을 다 포함할 것 같지만 데이터가 제거되거나 할 때 호출되지는 않는다)

아래는 예시


Adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {

                @Override

                public void onChanged() {

                    super.onChanged();

                    notifyDataSetChanged();

                }


                @Override

                public void onItemRangeChanged(int positionStart, int itemCount) {

                    Log.d(TAG, "onItemRangeChanged " + itemCount);

                    int headerCount = getHeaderCount();

                    notifyItemRangeChanged(positionStart + headerCount, itemCount);

                }


                @Override

                public void onItemRangeInserted(int positionStart, int itemCount) {

                    int headerCount = getHeaderCount();

                    notifyItemRangeInserted(positionStart + headerCount, itemCount);

                }


                @Override

                public void onItemRangeRemoved(int positionStart, int itemCount) {

                    Log.d(TAG, "onItemRangeRemoved " + "itemCount : " + itemCount);

                    int headerCount = getHeaderCount();

                    notifyItemRangeRemoved(positionStart + headerCount, itemCount);

                }


                @Override

                public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) {

                    int headerCount = getHeaderCount();

                    notifyItemMoved(fromPosition + headerCount, toPosition + headerCount);

                    // TODO itemcount가 1일 경우이므로 1보다 크면 제대로 동작하지 않는다.

                }

            });

반응형

댓글