[본 캠프(앱 개발 숙련) 강의내용 정리]
1. 뷰 바인딩의 장점 (=findViewById의 단점)
- 뷰 바인딩은 View에 Direct References(직접 참조)를 생성하므로 유효하지 않은 View의 id로 인해 nullpointerException이 발생하지 않는다.
2. 어댑터 뷰 (Adapter View)
- 정의 : 여러 개의 항목을 다양한 형식으로 나열하고 선택할 수 있는 기능을 제공하는 View
- 특징 : 표시할 항목의 데이터를 직접 관리하지 않고, Adapter로 부터 제공 받는다.
- 종류 : ListView, GridView / CustomView, RecyclerView -> 실무에서 많이 쓴다.
3. 어댑터 (Adapter)
- 특징 : 데이터를 관리하며, 데이터 원본과 어댑터뷰 사이의 중계 역할
- AdapterView가 데이터를 item에 표시하는 절차
(1) 데이터의 원본*이 Adapter에 설정되어야 하고, AdapterView에는 Adapter가 설정되어야 한다.
(*데이터의 원본 : DummyData or Server or DB or contentProvider 등등)
class PostAdapter(val posts: List<Post>) : BaseAdapter() {} // posts -> 데이터의 원본
binding.gvPosts.adapter = postAdapter // AdapterView(gbPosts)에 Adapter(postAdapter) 설정
(2) AdapterView는 getCount() 메소드를 통해 몇 개의 item을 표시할 것인지 알 수 있어야 한다.
override fun getCount() = posts.count() // item의 개수를 반환하는 getCount 메서드
(3) AdapterView는 getView() 메소드를 통해 화면에 실제로 표시할 item의 View를 얻고, 표시한다.
override fun getView(
position: Int,
convertView: View?,
parent: ViewGroup?,
): View {
// inflate 메서드에 null을 root 매개변수로 제공하여 인플레이션된 뷰는 부모의 어떤 레이아웃 매개변수도 적용받지 않는다.
val layoutInflater = LayoutInflater.from(parent?.context)
val view = layoutInflater.inflate(R.layout.item_post_gridview, parent,false)
val imageViewPost = view.findViewById<ImageView>(R.id.iv_post)
imageViewPost.setImageResource(posts[position].image)
return view
}
4. 어댑터의 종류
(1) BaseAdapter : 어댑터 클래스의 공통 구현
사용자 정의 어댑터 구현 시 사용
(2) ArrayAdapter : 객체 배열이나 리소스에 정의된 배열로부터 데이터를 공급받음
class MainActivity : AppCompatActivity() {
private val binding: MainActivityBinding by lazy {
MainActivityBinding.inflate(layoutInflater)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
// 1. 더미 데이터 셋업
val items = Array<String>(2000) {
"item" + (it + 1).toString().padStart(4, '0')
}
// 2. Adapter(ArrayAdapter) 객체 생성
val arrayAdapter = ArrayAdapter(
this, // 현재 context(컨텍스트)
android.R.layout.simple_list_item_1, // item으로 표시될 textView의 ResourceID
items // Data Source
)
// 3. AdapterView(ListView)에 Adapter 설정
binding.lvItem.adapter = arrayAdapter
}
}
(3) CursorAdapter : DataBase로 부터 데이터를 공급받음
(4) SimpleAdapter : 데이터를 Map(Key, Value)의 List로 관리
데이터를 XML 파일에 정의된 View에 대응시키는 어댑터 ??? -> DataBinding 느낌을 말하는 건가,,,
5. ListView
- 특징 : 항목을 수직으로 나열시키는 방식
-> 설정 절차 3단계
(1). Layout에 ListView 위젯 정의 (XML)
(2). Adapter 객체 생성 (Activity or Fragment)
(3). ListView 객체에 Adapter 연결
6. GridView
- 특징 : 항목을 격자 형태로 나열시키는 방식
- 각 라인의 Column 개수를 지정할 수 있음
-> android:numColumns="3"
- item 간의 간격을 지정할 수 있음
-> android:horizontalSpacing="1dp" / android:verticalSpacing="1dp"
'Android' 카테고리의 다른 글
Fragment의 정의, 사용법 및 데이터 전달 방식 (1) | 2024.04.12 |
---|---|
RecyclerView의 Adapter 구현 및 Item Click Event 처리방법 정리 (0) | 2024.04.11 |
스탠다드 2주차 강의내용 정리 및 과제(LifeCycle) (0) | 2024.04.10 |
챌린지 3주차 과제 해설 리뷰 (0) | 2024.04.09 |
앱 개발 입문 과제 해설 후기 (1) | 2024.03.29 |