728x90
반응형

Android 37

[Android] absoluteAdapterPosition 와 getBindingAdapterPosition 차이점

getBindingAdapterPosition()과 absoluteAdapterPosition 사이에는 기능적으로 비슷하면서도 가져오는 위치의 종류(상대적 위치 vs 절대적 위치)에서 차이를 보인다. 결과족으로는 RecyclerView.ViewHolder에서 현재 아이템의 위치를 반환하는 역할을 하지만 언어와 문맥에 따라 결과값이 달라질 수 있다. 특히 이러한 차이점은 ConcatAdapter와 같이 여러 개의 어댑터가 결합된 RecyclerView에서 중요해진다. getBindingAdapterPosition() : 상대적 위치 반환 - ViewHolder가 바인딩된 어댑터 내에서의 상대적인 위치를 반환한다. - ConcatAdapter를 사용하는 경우, ViewHolder가 속한 개별 어댑터 내에서의..

Android 2024.03.04

[Android] ViewHolder의 위치 참조 - getAdapterPosition / getBindingAdapterPosition

RecyclerView를 학습하면서 리스트의 아이템 항목 선택 시, 해당 아이템의 인덱스를 가져오는 과정에서 학습한 내용이다 RecyclerView의 아이템 항목을 선택하고, 하나만 선택될 수 있도록 새로 선택한 항목이 기존의 항목인지 비교하는 로직을 작성했다. 1. ViewHolder의 위치 참조 - int position @Override public void onBindViewHolder(@NonNull RvAdapter.MyViewHolder holder, int position) { holder.itemView.setOnClickListener(v -> { // 현재 아이템의 위치 조회 int currentPosition = position; }); } 처음에는 ViewHolder의 위치를 po..

Android 2024.03.03

[Android] Fragment 생성 방법 정리 / newInstance()

이 글에서는 프래그먼트의 효율적인 생성 방법에 대해 이야기해보겠습니다. 1. 직접 생성자 호출 MyFragment fragment = new MyFragment(); Fragment의 인스턴스를 직접 생성하기 위해 기본 생성자를 호출한다. 가장 기본적이고 간단한 방법이지만, 안드로이드 시스템이 Fragment를 재생성할 때 모든 데이터를 잃어버린다. 2. newInstance() : 정적 팩토리 메소드 public static MyFragment newInstance(String param1) { MyFragment fragment = new MyFragment(); // Fragment 인스턴스 생성 Bundle args = new Bundle(); args.putString("param1", para..

Android 2024.03.02

[Android] RecyclerView - ViewHolder의 재사용과 상태 관리의 중요성 (선택 이벤트 처리)

리스트 항목을 선택하고 스크롤 했더니 선택된 항목이 사라졌어요 문제 분석 RecyclerView는 Android 앱 개발에서 리스트 같은 형태로 아이템을 표시하기 위해 널리 사용되는 컴포넌트이다. RecyclerView를 사용해서 아이템 선택 시, 색상이 바뀌도록 목록을 구현하고 있었는데 리스트 목록을 아래로 내리니 선택했던 아이템이 사라지는 현상이 발생했다. 즉, 기본적으로 RecyclerView는 화면에 보이지 않는 뷰 홀더를 폐기하고, 다시 뷰에 데이터를 바인딩해서 재사용하기 때문에 기존에 선택했던 아이템이 사라지는 것이었다...! 게다가 선택된 상태로 아래에 다시 등장하는 아이템을 보고, 문제를 해결하기 위해 변경 사항을 추적하기로 했다. @Override public void onBindView..

Android 2024.03.01

[Android] RecyclerView 메소드에서의 payload

payload payload란 아이템의 변경 사항에 대한 부분 업데이트를 위해 사용되는 객체이다. 즉, 어댑터의 onBindViewHolder()가 호출될 때 넘겨 받는 파라미터이다. payload의 목적은 RecyclerView 내의 아이템 변경 시 전체 아이템 뷰를 재바인딩 하지 않으며, 변경된 부분만 업데이트 하는 것에 있다. onBindViewHolder(ViewHolder holder, int position, List payloads) payloads는 List 타입의 파라미터로 변경 사항에 대한 정보를 담고 있는 객체의 집합이다. payload는 Object 객체이기 때문에 기본 자료형(int, float, double, long)을 제외한 어떤 객체든 payload로 전달할 수 있다. 예시..

Android 2024.02.28

[Android] RecyclerView를 update하는 메소드

요약 전체적으로 업데이트 notifyDataSetChanged() 아이템 내용 변경 notifyItemChanged(int position) notifyItemChanged(int position, Object payload) notifyItemRangeChanged(int positionStart, int itemCount) notifyItemRangeChanged(int positionStart, int itemCount, Object payload) 아이템 추가 notifyItemInserted(int position) notifyItemRangeInserted(int positionStart, int itemCount) 아이템 이동 notifyItemMoved(int fromPosition, in..

Android 2024.02.28

[Android] RecyclerView - GridLayout 구현하기

RecyclerView를 카드뷰 형식으로 LinerLayout 형태로 만들어 보았다. 오늘은 GridView 형식으로 RecyclerView를 만들어 보자. 1. Layout 만들기 액티비티에 RecyclerView를 생성하고, 각 행의 아이템을 나타내줄 레이아웃도 작성해준다. 이때, row.xml에서 최상단 ConstraintLayout과 CardView는 wrap_content로 설정하여 아이템 항목에 맞춰 감싸준다. // activity_main.xml // row.xml 2. Adapter 작성 RvAdapter.java 파일을 생성한다. RvAdpater는 RecyclerView의 Adapter 클래스를 상속받아 MyViewHolder라는 내부 클래스를 사용하는 커스텀 어댑터를 정의한다. // ..

Android 2024.02.27

[Android] Retrofit2 통신과정과 사용법 / JSON 파일 받아오기

Retrofit은 HTTP API를 Java 인터페이스로 변환해주는 타입 안전한 HTTP 클라이언트 라이브러리이다. 즉, RESTful API와의 통신을 간단하고 효율적으로 만들어주는 것을 목표로한다. Retrofit은 선언적인 방식으로 API를 정의하고, HTTP 요청과 응답을 위한 인터페이스 기반의 선언적인 방식을 제공한다. 이를 구현하여 네트워크 요청을 손쉽게 처리할 수 있게 해준다. 안드로이드 앱 개발에서는 UI를 변경하거나 갱신하는 작업은 메인 스레드(또는 UI 스레드)에서만 수행해야 한다. 그러나 네트워크 작업, 대용량 데이터 처리, 복잡한 계산과 같은 시간이 많이 소요되는 작업은 메인 스레드에서 실행하면 앱이 느려지거나 "응답 없음(ANR)" 오류가 발생할 수 있다. 과거에는 AsyncTas..

Android 2024.02.22

[Android] Glide를 사용해서 네트워크 이미지 로드하기

Glide 라이브러리 Glide는 안드로이드용 오픈 소스 이미지 로딩 라이브러리로, 비동기 이미지 로딩, 이미지 캐싱, 애니메이션 등 다양한 기능을 제공한다. Glide는 특히 리스트나 그리드 같은 컬렉션 뷰에서 스크롤 성능을 향상시키기 위해 설계되었다고 한다. 서버에 있는 이미지(URL)를 로드하기위해 사용되며 재사용, 디스크 캐싱, 메모리 관점에서 매우 효율적이다. 공식문서 ▼ https://github.com/bumptech/glide?tab=readme-ov-file GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling An image loading and caching..

Android 2024.02.21

[Android] RecyclerView 스크롤 차단하기

android:overScrollMode 사용자가 컨텐츠의 시작이나 끝에 도달했을 때 발생하는 오버스크롤(콘텐츠를 넘어서 스크롤하는 것처럼 보이게 하는 효과)의 모드를 설정합니다 auto: 기본값으로, 스크롤 뷰가 오버스크롤을 할지 여부를 시스템이 결정합니다. always: 항상 오버스크롤 효과를 표시합니다. never: 오버스크롤 효과를 결코 표시하지 않습니다. android:overScrollMode="never" android:nestedScrollingEnabled 뷰가 중첩 스크롤을 지원할지 여부를 결정합니다. 중첩 스크롤은 한 스크롤 뷰가 다른 스크롤 뷰 내부에 있을 때, 사용자의 스크롤 동작이 어떻게 처리될지를 관리합니다. true: 중첩 스크롤을 활성화합니다. false: 중첩 스크롤을 비..

Android 2024.02.20
728x90
반응형
LIST