You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1. RecyclerAdapter에서 파라미터로 위치 데이터 설정하지 않고 변수로 만들어서 사용함
위치 데이터를 받으면 변수에 데이터 전체를 대입(set)하고 notifyDataSetChanged() 호출.
Adapter에서 notifyDataSetChanged()를 호출하는 부분에서 리스트의 크기와 아이템이 둘다 변경되는 작업들을 수행하기때문에 올바르게 사용되고 있으나, 이것을 정확히 알고 사용한 것이 아니고, 프로그램의 확장성을 고려했을 때 개선할 수 있는 부분이 분명히 있어보인다.
문제점: notifyDataSetChanged를 사용해서 리스트에서 아이템이 하나만 바뀌어도 리스트 전체를 갱신해야함.
<개선할 수 있는 방법?>
갱신 방법을 변경한다.
notifyItemChanged, notifyItemRangeChanged 등 상황에 맞게 처리한다.
ListAdapter를 사용한다.
위치데이터를 변수로 사용하지 않고 위치 데이터 타입을 ListAdapter의 파라미터에 넘겨주면 ListAdapter 내부에서 위치 데이터 리스트를 생성하고, 위치 데이터에 변경이 생기면 DiffUtil을 통해서 현재 리스트와 이전 리스트의 값을 비교해서 갱신하므로 notifyDataSetChanged를 호출하지 않아도 된다.
2. 새로운 Recyclerview를 만들때마다 사용할 RecyclerAdapter 클래스를 만들어줘야함
RecyclerView마다 새로운 Adapter와 ViewHolder를 생성하는 것은 낭비임. 재사용할 수 있게 만들려면 어떻게 해야할까?
래퍼런스 1 2
재사용을 위해서는 들어갈 Data와 표시할 View를 인스턴스를 생성할때 받고 BaseAdapter에서 처리해줘야한다.
Data는 BaseAdapter에서 사용할 리스트를 만들고 해당 데이터를 View에 바인딩하면 리스트를 매번 만들지 않아도 될 것이다.
View는 들어갈 컴포넌트들을 인스턴스를 생성할때 지정해야하므로 BaseAdapter의 파라미터에 BindView 메소드를 넣고 BaseViewHolder에서 사용하도록한다.
onCreate, onBind는 BaseAdapter에서 받은 함수 파라미터를 실행하게해서 인스턴스를 생성할때 View에 대한 처리를 하도록 만든다.
3. RecyclerView에 LayoutManager와 Adapter 등 지정해주는 것을 묶어서 처리하기
LayoutManager와 Adapter등 RecyclerView를 설정하는 코드를 묶어서 가독성을 올린다.
<개선할 수 있는 방법>
also 함수를 사용
The text was updated successfully, but these errors were encountered:
RecyclerView
1. RecyclerAdapter에서 파라미터로 위치 데이터 설정하지 않고 변수로 만들어서 사용함
위치 데이터를 받으면 변수에 데이터 전체를 대입(set)하고 notifyDataSetChanged() 호출.
Adapter에서 notifyDataSetChanged()를 호출하는 부분에서 리스트의 크기와 아이템이 둘다 변경되는 작업들을 수행하기때문에 올바르게 사용되고 있으나, 이것을 정확히 알고 사용한 것이 아니고, 프로그램의 확장성을 고려했을 때 개선할 수 있는 부분이 분명히 있어보인다.
문제점: notifyDataSetChanged를 사용해서 리스트에서 아이템이 하나만 바뀌어도 리스트 전체를 갱신해야함.
<개선할 수 있는 방법?>
notifyItemChanged, notifyItemRangeChanged 등 상황에 맞게 처리한다.
위치데이터를 변수로 사용하지 않고 위치 데이터 타입을 ListAdapter의 파라미터에 넘겨주면 ListAdapter 내부에서 위치 데이터 리스트를 생성하고, 위치 데이터에 변경이 생기면 DiffUtil을 통해서 현재 리스트와 이전 리스트의 값을 비교해서 갱신하므로 notifyDataSetChanged를 호출하지 않아도 된다.
2. 새로운 Recyclerview를 만들때마다 사용할 RecyclerAdapter 클래스를 만들어줘야함
RecyclerView마다 새로운 Adapter와 ViewHolder를 생성하는 것은 낭비임. 재사용할 수 있게 만들려면 어떻게 해야할까?
래퍼런스
1
2
재사용을 위해서는 들어갈 Data와 표시할 View를 인스턴스를 생성할때 받고 BaseAdapter에서 처리해줘야한다.
Data는 BaseAdapter에서 사용할 리스트를 만들고 해당 데이터를 View에 바인딩하면 리스트를 매번 만들지 않아도 될 것이다.
View는 들어갈 컴포넌트들을 인스턴스를 생성할때 지정해야하므로 BaseAdapter의 파라미터에 BindView 메소드를 넣고 BaseViewHolder에서 사용하도록한다.
onCreate, onBind는 BaseAdapter에서 받은 함수 파라미터를 실행하게해서 인스턴스를 생성할때 View에 대한 처리를 하도록 만든다.
3. RecyclerView에 LayoutManager와 Adapter 등 지정해주는 것을 묶어서 처리하기
LayoutManager와 Adapter등 RecyclerView를 설정하는 코드를 묶어서 가독성을 올린다.
<개선할 수 있는 방법>
The text was updated successfully, but these errors were encountered: