viewBinding - null safety, type safetey
viewBinding{
enable = true
}
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
여러개의 항목을 다양한 형식으로 나열하고 선택 할 수 있는 기능을 제공하는 뷰
표시할 항목 데이터를 직접 관리하지 않고, 어댑터라는 객체로부터 공급을 받습니다.
데이터를 관리하며 원본관 어댑터(ListView,GridView) 사이의 중계역할
사용자가 adapter view의 특정 위치의 항목을 선택했을 때, 어댑터뷰는 선택된 항목, 항목ID, 항목뷰를 어댑터의 getItem(), getItemId(), getView()메소드를 통해 얻어 이를 항목 선택 이벤트 처리기에 넘겨줌
getItem(): 선택된 항목
getItemId(): 선택된 항목의 ID
getView(): 선탱된 항목의 view
gradle에서 viewBinding 설정
//안드로이드 스튜디오 버전이 4.0이상 일때
android {
...
buildFeatures {
viewBinding = true
}
}
//안드로이드 스튜디오 버전이 3.6~4.0 일때
android {
...
viewBinding {
enable = true
}
}
<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" />
val items =
arrayOf<String?>("item1", "item2", "item3", "item4")
val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items)
binding.listView.adapter = adapter
만드는 법은 레이아웃을 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"
열 내부의 여백을 폭에 맞게 채움