recyclerview6 [Android] RecyclerView에서 페이징+삭제 처리하기 (with Room) #2 [Android] RecyclerView에서 페이징 처리하기 #1 RecyclerView에서 리스트를 스크롤하다가 어느 순간에 로딩 화면이 뜨면서 리스트가 늘어나는 것을 본 적 있을 것이다. Adapter에서 등록된 list가 마지막에 도달했을 때를 감지하여 로딩 화면을 띄우 ogyong.tistory.com 저번에 RecyclerView에서 문자열 배열이 저장된 파일을 이용해 페이징 처리를 해봤는데, 이번에는 실제로 Room에 저장된 데이터의 페이징과 삭제 처리를 해보려고 한다. RecyclerView 페이징 예제 예제에서 Room, ViewModel, LiveData, Coroutine, ViewBinding을 사용한다. 1부터 30까지의 값을 Room을 이용해서 기기에 저장한다. (데이터 저장은 별.. Android/RecyclerView 2023. 1. 9. [Android] 리스트에서 아이템 삭제 후 페이징할 때 조심할 점 RecyclerView의 addOnScrollListener를 사용해서 리스트의 마지막 위치가 표시될 때 다음 페이지에 대한 정보를 서버에 요청하여 페이징 작업을 하였다. 문제는 리스트에서 아이템을 삭제하고 다음 페이지에 대한 정보를 서버에 요청하면 아이템 하나가 사라지는 일이 생겼다. DB에 15개의 아이템이 있고, 1페이지에 5개씩 보인다고 가정하자. 4번 아이템을 삭제하게 되면 DB에 저장된 데이터는 아래 이미지처럼 변하게 된다. 여기서 문제가 발생한다. 4번을 삭제하고 2페이지를 호출하면 7~11까지의 아이템이 호출되어 6번 아이템을 볼 수가 없다. 삭제 api를 호출하여 아이템이 삭제되면 현재 페이지에 대한 리스트를 다시 호출을 한다. 현재 페이지에 추가된 마지막 값을 꺼내서 기존 리스트에 붙여.. 작업 일지 2023. 1. 2. [Android] RecyclerView에서 페이징 처리하기 #1 RecyclerView에서 리스트를 스크롤하다가 어느 순간에 로딩 화면이 뜨면서 리스트가 늘어나는 것을 본 적 있을 것이다. Adapter에서 등록된 list가 마지막에 도달했을 때를 감지하여 로딩 화면을 띄우고 다음 페이지를 호출하는 것이다. RecyclerView는 스크롤 상태와 리스트의 포지션에 대한 정보를 알려주는 addOnScrollListener 메서드를 제공한다. addOnScrollListener를 이용해서 페이징 처리를 해보려고 한다. RecyclerView 페이징 예제 1번 2번 3번 4번 5번 6번 7번 8번 9번 10번 11번 12번 13번 14번 15번 16번 17번 18번 19번 20번 21번 22번 23번 24번 25번 26번 27번 28번 29번 30번 총 3페이지가 있다고 .. Android/RecyclerView 2022. 12. 16. [Android] Expandable RecyclerView 구현하기 리스트에서 게시물을 클릭했을 때 게시물 아래로 콘텐츠가 펼쳐지는 앱을 본 적이 있을 것이다. 아이템을 클릭했을 때 내용을 보이거나 숨기거나 하는 기능에 Expandable이라고 명칭을 붙이는 것 같다. ListView에서는 ExpandalbeListView라는 Widget이 존재하지만 RecyclerView에는 없다. 따라서 Expandable RecyclerView를 직접 구현해야 한다. Expandable RecyclerView는 아이템을 클릭했을 때 현재 목록이 펼쳐졌는지 닫혀있는지 알 수 있도록 하는 상태 값이 필요하다. 그리고 상태 값에 따라서 내용을 visible하거나 gone 처리를 하면 된다. 예제로 RecyclerView의 아이템을 클릭했을 때 목록을 펼치고 다시 누르면 닫히는 앱을 만들.. Android/RecyclerView 2022. 11. 22. [Android] RecyclerView Drag and Drop 구현하기 RecyclerView에서 Drag and Drop을 사용하려면 ItemTouchHelper를 사용해야 한다. ItemTouchHelper는 RecyclerView에 Drag and Drop과 Swipe를 지원하는 유틸리티 클래스다. ItemTouchHelper 객체를 RecyclerView에 연결하고 interface에 정의한 drag 관련 메서드들을 override하여 Drag and Drop을 할 수 있다. Interface 정의 // Adapter에서 사용할 interface interface ItemMoveListener { // Drag 처리를 위한 메서드 fun onItemMove(fromPosition: Int, toPosition: Int): Boolean // Drop 처리를 위한 메서.. Android/RecyclerView 2022. 11. 18. [Android] RecyclerView 클릭 이벤트 처리하기 RecyclerView의 Item을 클릭할 때 intent나 api 호출 등을 Adapter에서 처리한다고 번거로웠던 적이 있다. 이럴 때 interface를 통해 Activity나 Fragment에서 클릭 이벤트를 처리할 수 있다. 1. Interface 생성 2. Adapter에서 Interface에 대한 객체를 생성 및 초기화 3. Activity 또는 Fragment에서 override 하여 사용 예제로 아이템을 클릭했을 때 해당 아이템의 텍스트를 토스트로 띄워보려고 한다. 인터페이스 생성 interface SetOnClickListenerInterface { fun listItemClickListener(itemData: String, binding: ItemListMainBinding) } 리.. Android/RecyclerView 2022. 11. 2. 이전 1 다음