Allows custom layouts when a list or a grid is not enough for the use case
대각선으로 스크롤을 할 수 있는 요소는 아님
Question 2
Efficiently displays large lists.
Reuses view that scrolls off screen to display the next item that scrolls on screen
2,3 번의 경우 RecyclerView를 사용해서 얻어가는 이점보다도 내부 코드적으로 처리해서 그렇게 처리할 수 있는 부분이라고 볼 수 있음
Question 3
Separation of concerns makes it easier to change and test code.
RecyclerView is agnostic to the data that is being displayed.
Data processing layers do not have to concern themselves with how data will be displayed.
앱이 빨라지는 것은 아님
Question 4
The ViewHolder layout is defined in XML layout files.
You can have more than one ViewHolder in a RecyclerView
The Adapter binds data to the ViewHolder.
ViewHolder는 data를 보여주는 layout이지 dataset의 각 data unit을 위한 하나의 ViewHolder 등의 단위가 아님
[7.2 Homework]
Question 1
Extends the ItemCallBack class
Override areItemsTheSame()
Override areContentsTheSame()
data binding을 통해서 할 필요없음 DiffUtil 자체로 item을 비교할 수 있기 때문에
Question 2
A binding adapter is a function annotated with @BindingAdapter
Using a binding adapter allows you to separate data formatting form the view holder.
Binding adapters are a good solution when you need to transform complex data
BindingAdapter는 별도로 확장함수 형태로 만들어서 databinding을 활용하는 것이지 RecyclerViewAdapter를 사용하는 것보다 해당 Adapter에서 코드를 개선을 해서 쓰는 것뿐
Question 3
Your data is simple
You are formatting a string
Your ViewHolder only contains one view
단순한 형태의 View이고 복잡한 상황이 아니라면 굳이 binding adapter를 쓰지 않아도 됨
[7.3 Homework]
Question 1
LinearLayoutManager
GridLayoutManager
StaggeredGridLayoutManager
CircularLayoutManager는 없음 list와 grid 형태임
Question 2
The number of columns in a grid that has a vertical orientation.
span은 GridLayout에서 배치되는 item들을 차지하는 한 칸을 말함
[7.4 Homework]
Question 1
In the layout file that defines the layout for a single row in the shopping list, add a <data> variable for ShoppingListItemListener
item.xml에 data binding으로 추가해서 해당 레이아웃에 onClick으로 등록함
Question 2
Add it to the layout file for an item in the row. If you want the entire item to be clickable, add it to the parent view that contains the items in the row.
Add it to the layout file for an item in the row. If you want a single TextView in the item to be clickable, add it to the <TextView>
해당 item.xml에 부모뷰에 설정해도 되고 설명처럼 TextView만을 하고 싶다면 TextView에 넣어서 처리할 수 있음, onClick을 일단 해당 item과 관련된 레이아웃 파일에 넣어줘야함
[7.5 Homework]
Question 1
An adapter can use multiple ViewHolder classes to hold headers and various types of data.
여러가지 type으로 구성된 데이터와 list에 대한 header등을 가질 수 있고 이를 위치를 정해서 설정해서 ViewHolder가 처리할 수 있음
Question 2
Use coroutines for long-running tasks that could slow the UI
List manipulations can take a long time, and you should always do them using coroutines.
RecyclerView에서 시간이 오래걸리는 작업을 할 시 UI thread를 쓰게 되면 지연되거나 ANR 에러가 나올 수 있음, 그래서 그런 상황에선 Coroutine을 써주는게 적절함
Question 3
In the ViewHolder, provide mutiple layout files to inflate as needed.
ViewHolder 안에 여러 개의 layout file을 inflate하는게 아닌 그에 맞게 여러개의 ViewHolder 클래스를 만들어서 설정해줘야함
[7.1 Homework] Question 1
Allows custom layouts when a list or a grid is not enough for the use case
Question 2
Reuses view that scrolls off screen to display the next item that scrolls on screen
RecyclerView
를 사용해서 얻어가는 이점보다도 내부 코드적으로 처리해서 그렇게 처리할 수 있는 부분이라고 볼 수 있음Question 3
RecyclerView
is agnostic to the data that is being displayed.Data processing layers do not have to concern themselves with how data will be displayed.
Question 4
ViewHolder
layout is defined in XML layout files.ViewHolder
in aRecyclerView
The
Adapter
binds data to theViewHolder
.ViewHolder
는 data를 보여주는 layout이지 dataset의 각 data unit을 위한 하나의ViewHolder
등의 단위가 아님[7.2 Homework] Question 1
ItemCallBack
classareItemsTheSame()
Override
areContentsTheSame()
Question 2
@BindingAdapter
Binding adapters are a good solution when you need to transform complex data
RecyclerViewAdapter
를 사용하는 것보다 해당 Adapter에서 코드를 개선을 해서 쓰는 것뿐Question 3
Your
ViewHolder
only contains one view[7.3 Homework] Question 1
LinearLayoutManager
GridLayoutManager
StaggeredGridLayoutManager
CircularLayoutManager
는 없음 list와 grid 형태임Question 2
The number of columns in a grid that has a vertical orientation.
[7.4 Homework] Question 1
In the layout file that defines the layout for a single row in the shopping list, add a
<data>
variable forShoppingListItemListener
onClick
으로 등록함Question 2
Add it to the layout file for an item in the row. If you want a single
TextView
in the item to be clickable, add it to the<TextView>
[7.5 Homework] Question 1
An adapter can use multiple
ViewHolder
classes to hold headers and various types of data.ViewHolder
가 처리할 수 있음Question 2
List manipulations can take a long time, and you should always do them using coroutines.
RecyclerView
에서 시간이 오래걸리는 작업을 할 시 UI thread를 쓰게 되면 지연되거나 ANR 에러가 나올 수 있음, 그래서 그런 상황에선 Coroutine을 써주는게 적절함Question 3
In the
ViewHolder
, provide mutiple layout files to inflate as needed.ViewHolder
안에 여러 개의 layout file을 inflate하는게 아닌 그에 맞게 여러개의ViewHolder
클래스를 만들어서 설정해줘야함