[스터디 4] 배운 내용 정리

2022. 11. 2. 11:18·✨ 공부 기록/Android

<ListView>

  • List를 사용하는 앱은 무엇이 있을까?
    • 카카오톡 : 친구 목록, 채팅 목록
    • 인스타그램 : 팔로우 목록
    • 배달의 민족 : 식당 목록
    • 디스코드 : 채팅
    • 주소록 : 주소 목록
  • 카카오톡 친구목록을 LinearLayout만으로 구현한다면 어떤 단점이 있을까?
    • 추가/삭제하기가 불편하다.(복사, 붙여넣기의 반복)
    • 만든 갯수만큼만 표현할 수 있다.
    → 데이터 수가 적거나 (특히) 고정되어 있을때는(예. 설정) 굳이 Listview를 사용하지 않아도 된다.

 

  • List의 특징은?
    1. 비슷한 데이터들을 모아둔다.
    2. 정렬이 필요한 경우
    3. 추가/삭제가 용이하다.
    4. 공통점을 가지고 있는 데이터들을 비슷한 형태로 나타낸다.
    5. 나타나는 데이터가 항상 동일하지 않고 변할 수 있음.
    → ListView : 비슷한 데이터를 여러 개 나타낼 때 반복되는 Layout을 재사용해서 많은 정보들을 표현
  •  

<ListView의 구조 생각해보기>

  • ArrayList
    • 자주 사용되는 자료구조
    • 배열에 더 다양한 기능을 추가함.
      • 생성 시에 사이즈 지정을 하지 않아도 된다(c언어의 경우 미리 사이즈를 지정해야 하는 경우가 있다.), 항목의 추가와 삭제가 쉽다.
    • 다양한 Type을 지원한다.
      • 직접 만든 객체도 쉽게 배열로 관리할 수 있다.
    ⇒ ListView 구현 시에 아이템을 담는 목록으로 자주 사용된다.

 

  • ListView에 필요한 구성요소 생각해보기
    1. 아이템을 담을 목록(ArrayList)
    2. 데이터의 총 갯수
    3. ListView 전체에 대한 Layout
    4. ListView 안의 개별 Item에 대한 Layout
    5. 데이터를 Layout에 표시하는 함수
    데이터 관리
    • item 각각에 데이터를 가져오는 함수
    • item을 위치에 따라 가져옴
    1. 스크롤

+) 기존 View(Layout)들은 어떤 기능이 있었나?

  • LinearLayout : 정렬, weight(가중치) 설정, 방향 설정 등
  • ConstraintLayout : Constraint(제약) 설정, chain 설정 등

→ 여기에 비해 ListView는 너무 많은 일을 한다. View 관리, 데이터 관리 등 ⇒ 이럴 경우 하나에 많은 것이 엮여있어서 수정이 어렵다. 느려질 수 있다.

⇒ ListView의 부담을 줄일 수 있도록 기능을 분산하자! 데이터 관리를 Adapter에게 위임!

 

  • Adapter의 역할
    • 데이터를 적절히 가공하여 View에 전달한다.(예. TextView 설정, ImageView 설정 등)
  • ListView Adapter의 구성 요소
    • 실제 item을 담고 있는 List(ArrayList)
    • Item을 list에서 가져오는 함수
    • item에 고유한 ID를 가져오는 함수(my) 인덱스 같은..?)
    • ListView에서 표현할 총 Item 수를 가져오는 함수

(40분)

⇒ 그러나 최근에는 ListView를 잘 사용하지 않는다? 치명적인 단점이 있기 때문.

: 화면에 보이든 말든 view를 전부 다 만들어둔다. 그렇기 때문에 view를 재활용하는 기능을 추가한 효율적인 ListView인 RecyclerView를 사용한다.

<RecyclerView의 특징>

  1. View를 미리 담아놓고 재활용하는 ViewHolder 사용
  • Layout의 XML 정보를 미리 해석(Inflate) 해두어 재활용
  1. 표현 방법을 정하는 LayoutManager 사용(반드시 설정을 해주어야 함. → a) XML에서 설정, b) kotlin 코드에서 설정)
  • 선형적으로 배치하는 LinearLayoutManager
    • orientation (방향) 설정을 통해 수평/수직 설정 가능
  • 그리드 형태로 배치하는 GridLayoutManager
    • orientation (방향) 설정을 통해 수평/수직 설정 가능
    • spanCount로 행 or 열의 갯수 설정 가능

<RecyclerView Adapter의 구성>

  • 실제 Item을 담고 있는 List
  • ViewHolder 객체
  • ViewHolder 생성 시에 수행할 작업을 작성한 함수(onCreate와 비슷함.)
  • ViewHolder가 보일 때 수행할 작업(위치(position) 정보를 받는다.)
  • RecyclerView에서 표현해야 할 총 아이템 수 등

<실습 - Recyvlerview 만들기>

  • Recyclerview를 만들때, id를 꼭 설정해주어야 한다. → why? 어댑터 설정이라던지, 코틀린 코드에서 사용하려면 필요함.
  • Adapter도 종류가 다양함.
  • (관련 내용 공부 후에 다시 듣기)

'✨ 공부 기록 > Android' 카테고리의 다른 글

[스터디 3] 배운 내용 정리  (0) 2022.11.02
[Android] 새로운 Activity 만들기  (0) 2022.10.09
'✨ 공부 기록/Android' 카테고리의 다른 글
  • [스터디 3] 배운 내용 정리
  • [Android] 새로운 Activity 만들기
LaonMoon
LaonMoon
  • LaonMoon
    스토리생성연구블로그
    LaonMoon
  • 전체
    오늘
    어제
  • 공지사항

    • About me👋
    • 분류 전체보기
      • ✨ Story Generation
        • 논문 리뷰
        • 연구 관련 생각
      • ✨ 자연어 처리
        • (짧은) 논문 리뷰
        • HuggingFace
        • Transformer 구현
      • ✨ 공부 기록
        • 알고리즘
        • 딥러닝
        • 웹 개발
        • Flutter
        • Flask
        • Android
        • NLP
        • Docker&k8s
        • Database
        • [24-1] 데이터 분석
        • [24-1] RL
      • ✨ 포트폴리오
        • 2020
        • 2021
        • 2022
        • 2023
        • 2024
      • 프로그래밍
        • 오류(Error)정리
        • 시행착오
        • 리눅스 명령어
        • 공부내용 정리
      • AI Playground
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LaonMoon
[스터디 4] 배운 내용 정리
상단으로

티스토리툴바