https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView
RecyclerView | Android Developers
androidx.appsearch.builtintypes.properties
developer.android.com
대규모 데이터셋을 제한된 범위에
제공하기 위한 유연한 뷰
어댑터를 통해 만들어진 각 아이템뷰가
뷰홀더 객체에 저장되어 화면에 표시되고
필요에 따라 생성 또는 재활용
gradle에 추가해줘야한다.
implementation(libs.recyclerview.v7)
구현 순서
1. 리사이클러뷰 추가
2. 아이템뷰 레이아웃 추가
3. 어댑터 구현
4. 리사이클러뷰에서 어댑터, 레이아웃 매니저 지정
class CharacterViewerAdapter extends RecyclerView.Adapter<CharacterViewerAdapter.ViewHolder> {
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
ItemCharacterViewerBinding binding = ItemCharacterViewerBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
return new ViewHolder(binding);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
locale = getResources().getConfiguration().getLocales().get(0);
} else {
locale = getResources().getConfiguration().locale;
}
String label = MusicInfo.music_list.get(position).getMusicLabel(locale);
holder.binding.labelText.setText(label);
holder.binding.preview.setImageDrawable(drawables[position]);
}
@Override
public int getItemCount() {
return size;
}
class ViewHolder extends RecyclerView.ViewHolder {
ItemCharacterViewerBinding binding;
public ViewHolder(@NonNull ItemCharacterViewerBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
}
1. onCreateViewHolder()
ViewHolder 객체를 생성하고 초기화
ItemCharacterViewerBinding binding = ItemCharacterViewerBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
return new ViewHolder(binding);
뷰바인딩을 이용하여 리사이컬러뷰의 각 항목을 바인딩
ViewHolder를 생성하고 반환
2. onBindViewHolder()
RecyclerView의 각 항목에 대한 데이터를 뷰에 바인딩
텍스트, 이미지를 설정
3. getItemCount()
RecyclerView에 표시할 총 항목 수를 반환
여기서는 MusicInfo.music_list의 크기를 반환
4. ViewHolder()
ViewHolder의 바인딩을 저장
'안드로이드 프로그래밍' 카테고리의 다른 글
All about layout (1) | 2024.03.24 |
---|---|
Json 기초 (0) | 2024.03.22 |
단위 변환기 앱 (0) | 2023.11.16 |
계수기 (숫자 세기 앱) (0) | 2023.11.13 |
갤러리 (0) | 2023.03.13 |