반응형
Greensky0026
삽질러의 대환장 공사판
Greensky0026
전체 방문자
오늘
어제
  • 분류 전체보기 (241)
    • Language (56)
      • JAVA (13)
      • Swift (38)
      • Kotlin (4)
      • Dart (0)
      • PHP (0)
      • JavaScript (1)
    • IDE & Framework (92)
      • Spring (10)
      • Android (48)
      • iOS (8)
      • NodeJS (1)
      • CodeIgniter (3)
      • Flutter (1)
      • 분류중 (18)
    • Infra (8)
    • Database (12)
    • VCS (4)
    • Debug Log (34)
      • java (7)
      • swift (3)
      • Android (9)
      • Web (7)
      • 삽질기 (7)
    • Others (19)
      • 코딩테스트 풀이 (0)
      • IT 이야기 (18)
    • 쉼터 (2)
    • 개발공부 (14)
      • Network (1)
      • 자료구조와 알고리즘 (2)
      • Code design (8)
      • ETC (1)
      • 아카이브 (1)

블로그 메뉴

    공지사항

    • 프로그래머스 코딩 테스트 관련글 비공개 처리

    인기 글

    태그

    • 프로그래밍
    • 공부
    • xcode
    • swift
    • Android
    • 프로그래머스
    • 개발
    • Java
    • swfit
    • IT
    • 코딩테스트
    • map
    • kotlin
    • 예제
    • 타입
    • ios
    • JSP
    • reduce
    • 구축
    • level1

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    Greensky0026

    삽질러의 대환장 공사판

    Recycler View item handeling
    IDE & Framework/Android

    Recycler View item handeling

    2021. 6. 21. 02:35
    반응형

     제목 그대로입니다.

    가로로 리스트뷰를 제작해야해서 리사이클러뷰를 썼는데,

    리사이클러뷰는 아이템에 접근할 수 있는 메서드가 onBindViewHolder뿐입니다.

    기존 레이아웃을 재활용할 뿐더러 접근할수 있는 메서드가 하나 (지만 이것도 데이터 바인딩에 사용)밖에 없어서

    리스트뷰에 비해서 사용하기가 너무 까다로웠습니다.

    혼자서 끙끙대다가 구글링해보니 같은 고민을 하시는 분이 많아 저도 작성해봅니다.

     

     리사이클러뷰에서 단일 아이템을 선택해서, 해당 아이템만 배경색을 바꾸려면 다음과 같은 과정이 필요합니다.

    1. 선택된 아이템의 Position을 저장할 전역변수를 생성합니다.

    2. onBindViewHolder에서 생성된 ViewHolder를 ArrayList로 유지합니다.

        + ArrayList의 contain메서드를 활용해 중복되지 않게 유지합니다.

    3. onBindViewHolder의 holder.itemView에 onclickListener를 부착합니다.

        클릭시 일단 ArrayList로 유지한 뷰홀더의 배경색을 모두 초기화합니다.

        이후에 클릭된 position을 전역변수에 저장하고, 클릭된 홀더의 itemView의 배경색을 변경합니다.

    4. onBindViewHolder로 돌아가, 뷰를 생성하거나 재활용할 떄,  전역변수에 저장된 Position과 일치하면 배경색을 변경,
        일치하지 않는다면 초기색을 하도록 코딩합니다.

    5. 이후 선택되어있는 아이템의 데이터를 가져오도록 메서드를 추가합니다.

     

    반응형
    저작자표시 (새창열림)

    'IDE & Framework > Android' 카테고리의 다른 글

    AsyncTask는 왜 deprecated 되었을까?  (0) 2021.07.09
    Retrofit2 간단한 사용법  (0) 2021.06.29
    Custom ListView 만들기(1/2) - 설계  (0) 2021.06.05
    LayoutInflater는 무엇일까?  (0) 2021.06.05
    비동기(Async)통신과 동기(Sync)통신의 차이 feat. retrofit  (0) 2021.05.08
      'IDE & Framework/Android' 카테고리의 다른 글
      • AsyncTask는 왜 deprecated 되었을까?
      • Retrofit2 간단한 사용법
      • Custom ListView 만들기(1/2) - 설계
      • LayoutInflater는 무엇일까?
      Greensky0026
      Greensky0026
      점이 모여 선이 된다. 내 삽질도 언젠간 거대한 지하 도시가 되겠지!

      티스토리툴바