안드로이드 recyclerview 에 관한 질문


안드로이드의 recyclerview 에서,

getItemId 와 setHasStableIds 메소드의 쓰임새를 알고 싶습니다.

저 둘은 왜 있는건가요?

  • 2016년 03월 08일에 작성됨

조회수 764


1 답변


setHasStablesIds(boolean)메소드는 adapter에 연결되는 각 아이템 항목에 대해서 고유(unique)한 아이디를 부여하겠다고 명시하는 메소드입니다.

리스트의 데이터가 변화되었을때 notifyDataSetChanged를 호출해도 setHasStablesIds(true)로 선언했다면 해당 아이템의 id가 바뀌지 않는다고 하네요.

대신 setHasStablesIds(true) 로 해도 getItemId를 override해서 구현하지 않으면 NO_ID가 return 될거에요.

unique한 itemId를 부여해서 getItemId를 사용하는 이유는 데이터의 수정, 삭제, 검색등의 여러가지 이유가 있을수 있습니다.

example)

class Car {
     int number;
     String name;
}
@Override
public long getItemId(int position){
    Car car = mListOfCars.get(position);
    return (car.name).hashcode();
}

이런식으로 고유한 id를 만들어서 넘길 수 있습니다.

  • 2016년 06월 01일에 수정됨
    안드로이드, 루비온레일즈
  • 2016년 03월 10일에 작성됨
    안드로이드, 루비온레일즈

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close