정답보다 해답을

[Android] SwipeRefreshLayout 새로고침 구현 본문

Android

[Android] SwipeRefreshLayout 새로고침 구현

스탑스톤 2024. 4. 2. 18:22

문제점

Firebase에서 제공하는 addValueEventListener()를 사용하여 데이터를 읽어오니

실시간으로 받아오기 때문에 내 프로젝트 요구사항에는 맞지 않는다고 판단했다.

여러 사용자가 게시글을 작성하면 실시간으로 업데이트 되는 현상이 불편함을 줄 수 있음.

 

그래서 addListenerForSingleValueEvent()를 사용하기로 했다.

둘의 차이점은 실시간 데이터를 읽어오기와 한번만 읽어오기이다.

 


해결방안

우선 화면을 구성할때 데이터를 한 번 읽어오고 새로고침하여 데이터를 새로 받오도록 구현해야겠다!

 


사용방법

    // Swipe
    implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")

SwipeRefeshLayout을 사용하기 위해서는 아래 종속성을 build.gradle(. app) dependencies의 추가해주어야 한다.

그리고 레이아웃의 최상단 태그를 스와이프로 변경해주면 된다.

 

        binding.refreshLayout.setOnRefreshListener {
            loadPostData()
            binding.refreshLayout.isRefreshing = false
        }

 

 

레이아웃의 id를 정의하고,

setOnRefreshListener를 통해 스와이프시 실핼할 이벤트를 정의할 수 있다.

나는 데이터를 불러오는 것을 넣어주었다.

여기서 isRefreshing = false 를 해주지 않으면 새로고침이 계속 돌아가니 주의하자!!