안드로이드 recyclerview 에 관한 질문

조회수 4797회

안드로이드의 recyclerview 에서,

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

저 둘은 왜 있는건가요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

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를 만들어서 넘길 수 있습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)