TIL #70

loci·2024년 7월 9일
0

TIL

목록 보기
67/103

ViewBinding

viewBinding - null safety, type safetey

viewBinding{  
    enable = true  
}

binding = ActivityMainBinding.inflate(layoutInflater)  
val view = binding.root  
setContentView(view)

Adapter view (어댑터 뷰)

여러개의 항목을 다양한 형식으로 나열하고 선택 할 수 있는 기능을 제공하는 뷰

표시할 항목 데이터를 직접 관리하지 않고, 어댑터라는 객체로부터 공급을 받습니다.

  • 리스트뷰(ListView) : 항목을 수직으로 나열시키는 방식
  • 그리드 뷰(GridView): 항목을 격자 현태로 나열시키는 방식(갤러리)

Adapter

데이터를 관리하며 원본관 어댑터(ListView,GridView) 사이의 중계역할

  1. 데이터 원본이 adapter에 설정되어 있어야함
  2. adapter view 에는 adapter가 설정되어 있어야함
  3. getCount() -> adapter에서 데이터 항목의 총 개수를 가져옴
  4. getView -> 화면에 실제 표시할 항목 뷰를 얻고 화면에 표시

사용자가 adapter view의 특정 위치의 항목을 선택했을 때, 어댑터뷰는 선택된 항목, 항목ID, 항목뷰를 어댑터의 getItem(), getItemId(), getView()메소드를 통해 얻어 이를 항목 선택 이벤트 처리기에 넘겨줌
getItem(): 선택된 항목
getItemId(): 선택된 항목의 ID
getView(): 선탱된 항목의 view

adapter 종류

  1. baseAdapter : adapter class 의 공통구현, 사용자 정의 adapter 구현시 사용
  2. ArrayAdapter : 객체 배열이나 리소스에 정의된 배열로부터 데이터를 공급받음
  3. CursorAdapter : 데이터베이스로부터 데이터를 공급받음
  4. SimpleAdapter : map(키,값)의 리스트로 관리, 데이터를 Xml파일에 정의된 뷰에 대응시키는 adapter

리스트뷰 설정

  1. listView 위젯정의(xml)
  2. adapter 객체 생성
  3. ListView 객체에 adapter연결

ListView를 arrayAdapter로 만들기

gradle에서 viewBinding 설정

//안드로이드 스튜디오 버전이 4.0이상 일때
android {
    ...
    buildFeatures {
        viewBinding = true
    }
}
//안드로이드 스튜디오 버전이 3.6~4.0 일때
android {
    ...
    viewBinding {
        enable = true
    }
}

listview 만들기

<ListView  
    android:id="@+id/listView"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    app:layout_constraintBottom_toBottomOf="parent"  
    app:layout_constraintEnd_toEndOf="parent"  
    app:layout_constraintStart_toStartOf="parent"  
    app:layout_constraintTop_toTopOf="parent" />

adapter 생성후 ListView에 연결(simple_list_item_1기본제공 item 레이아웃)

val items =  
    arrayOf<String?>("item1", "item2", "item3", "item4")  
  
val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items)  
  
binding.listView.adapter = adapter

grid view

만드는 법은 레이아웃을 GridView로 주는 것을 제외하면 listView와 거의 같음

	<GridView  
    android:id="@+id/listView"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:columnWidth="100dp"  
    android:numColumns="auto_fit"  
    android:verticalSpacing="10dp"  
    android:horizontalSpacing="10dp"  
    android:stretchMode="columnWidth"  
    android:gravity="center"/>
  • columnWidth="100dp" : 그리드 항목 하나의 폭을 100dp로 설정
  • numColumns="auto_fit" : 열의 폭과 화면 폭을 바탕으로 자동계산
  • verticalSpacing : 항목 간의 간격 설정
  • stretchMode="columnWidth" 열 내부의 여백을 폭에 맞게 채움
profile
편리한 개발자

0개의 댓글