recyclerview

Android

Android ListAdapter submitList not refreshing

문제의 발단 최근 프로젝트에서 요즘 많이 쓰이는 ListAdapter(feat.DiffUtil)을 사용해보게 되었다. 나는 멤버변수로 MutableList를 가지고 있었고, 해당 리스트를 add, remove로 수정하고 submitList의 파라미터로 전달했다. 그런데 RecyclerView가 새로고침되지 않았다. 발생 원인 ListAdapter에게 submitList로 리스트를 전달하면 ListAdapter 내부의 AsyncListDiffer 멤버변수의 submitList를 호출한다. 해당 메소드는 멤버로 이전에 전달받은 list를 가지고 있고, 기존 멤버변수와 전달받은 파라미터의 list를 비교한다. 만약 두 리스트가 같다면 함수를 리턴한다. (여기서 같다는 의미는 메모리 주소가 같다는 것을 의미한다..

Android

Android ViewPager2 Set Page Margin

이번 글은 안드로이드 뷰페이저를 사용하며 리사이클러뷰에서 ItemDecoration을 사용했듯 페이지 간 마진을 설정하는 방법에 대해 소개해보려 한다. 뷰페이저에서 페이지 간 마진을 주기 위해서는 먼저 뷰페이저에 PageTransformer를 설정해야 한다. 그리고 MarginPageTransformer 클래스를 사용해 생성자에 마진을 설정할 픽셀 값을 전달하면 된다. 여기서 다들 dp 단위를 사용하고 싶을테니 dp를 px단위로 변환하는 과정이 필요하다. 이젠 코드로 한 번에 살펴보자. https://gist.github.com/BonusTrack02/aed704c6c989a9345444758894c7acff ViewPager2 set page margin including dp to px convert..

Android

Android RecyclerView ItemDecoration in Kotlin

내가 이 클래스를 사용하게 된 이유 내가 사용하던 RecyclerView에는 각 아이템 하단에 구분선(Divider)이 있다. 이전에는 해당 아이템을 구성하는 xml에 MaterialDivider를 배치했었다. 새로운 요구사항이 들어오면서 구조 변경의 필요성을 느끼게 되었다. 새로운 요구사항은 마지막 아이템은 구분선이 가로 전체를 차지하도록 변경하는 것이었다. 새로운 요구사항에 따른 시도 RecyclerView Adapter의 onBindViewHolder에서 마지막 아이템을 확인해서 AttributeSet을 다시 할당해주었다. 나름 그럴싸한 로직이라 생각했다.(내 기준) 그 결과, 알 수 없는 버그들이 밀려들어왔다. 처음 adapter를 할당했을 땐 마지막 아이템에만 해당 AttributSet이 적용되..

BonusTrack02.dev
'recyclerview' 태그의 글 목록