2016-11-18 3 views
0

다음 code snippet을 사용하여 recyclerview 항목을 업데이트하려고합니다.recyclerview에서 단일 항목을 업데이트하는 방법은 무엇입니까?

public void setItemToPostion(WatchListEpisodeBean watchListBean, int itemPosition) { 
    this.watchListBean.add(itemPosition, watchListBean); 
    notifyItemChanged(itemPosition); 
} 

잘 작동합니다. 새로운 데이터로 업데이트 된 위치의 항목입니다. 그러나 문제는 다음 위치에 복제 된 항목입니다 (다음 위치에 나타남). 내 코드에 문제가있는 것을 발견하지 못했습니다.

이 APPCOMPAT & 지원 디자인 LIB 버전입니다 :

compile 'com.android.support:appcompat-v7:23.2.0' 
compile 'com.android.support:design:23.2.0' 

는이 문제를 해결하기 위해 도와주세요. 미리 감사드립니다. 당신이 항목을 추가되기 때문에 대신 notifyItemChanged(itemPosition);

+0

위의 방법을 호출하는 곳에서 어댑터 코드를 게시하십시오. – Raghavendra

+0

답변을 얻었습니다 Rahavendra ... 감사 ... –

답변

6

귀하의 항목의

-1

사용 notifyDataSetChanged();는 클론입니다. 당신은 단순히 뷰의 한 부분을 업데이트하는 경우

public void setItemToPostion(WatchListEpisodeBean watchListBean, int itemPosition) { 
    this.watchListBean.set(itemPosition, watchListBean); 
    notifyItemChanged(itemPosition); 
} 
+1

지니어 파텔, 이유를 설명해 주시겠습니까? –

1

처럼 set 대신 add을 사용하려고 대신 notifiyDataSetChanged()notifyItemChanged() 사용합니다. 여기의 차이점은 구조적 변경 대 항목 변경과 관련이 있습니다. 이것은 안드로이드 개발자 RecyclerView.Adapter 설명서에서 찾은 것입니다 here.

데이터 변경 이벤트의 두 가지 종류가있다

, 제품의 구조적 변화 변경 : 여기

변경 두 종류의 차이에 다른 토막이다. 항목 변경은 하나의 항목에 데이터가 업데이트되었지만 위치가 변경되지 않은 경우입니다. 구조 은 항목이 데이터 내에 삽입, 제거 또는 이동 된 경우입니다 ( ).

관련 문제