본문 바로가기
Develop/Android

android SwipeRefreshLayout 구현하기(아래로 당겨서 새로고침)

by 라이프레이서 2020. 7. 30.
반응형

이번 포스팅에서는 간단하게 ListView나 RecyclerView를 사용할 때 아래로 당겨서 새로고침을 표시해주는 SwipeRefreshLayout을 알아보고자 합니다.

SwipeRefreshLayout은 페이스북의 뉴스피드를 아래로 당겨서 새로고침을 해보면 아래 이미지처럼 동작하는 것을 볼 수 있습니다.

facebook의 SwipeRefreshLayout

사용 이유

많은 양의 데이터를 서버로부터 받아와 화면에 표시하려면 어느 정도의 시간이 걸립니다. 그 동안 화면이 멈춰있다면 사용자는 앱이 멈춘 것인가? 라는 생각이 들 수도 있기 때문에 이를 표시하기 위한 용도로 사용됩니다.

사용 방법

그럼, 함께 android에서 SwipeRefreshLayout을 사용하는 방법을 알아보도록 하겠습니다.

1. gradle 설정

먼저, 모듈 단위의 gradle의 dependencies 설정을 다음 내용을 추가합니다.

dependencies {
    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"  
}
2. 적용할 뷰 SwipeRefreshLayout으로 감싸주기

ListView나 RecyclerView를 SwipeRefreshLayout으로 감싸줍니다.

    <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
        android:id="@+id/srl_main"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/rv_main"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
3. 해당하는 화면에서 OnRefreshListener 등록
    srl_main.setOnRefreshListener { 
        // 사용자가 아래로 드래그 했다가 놓았을 때 호출 됩니다.
        // 이때 새로고침 화살표가 계속 돌아갑니다.
        // 서버통신~~
        srl_main.isRefreshing = false //서버 통신 완료 후 호출해줍니다.
    }

SwipeRefreshLayout에 OnRefreshListener를 등록하면, 계속 화살표가 돌아가는 화면이 나오게 됩니다.
이 안에서 데이터를 받아오도록 서버와 통신을 요청하고, 응답을 받게 되면 callback 이벤트 안에서 SwipeRefreshLayout의 isRefreshing 속성을 false로 지정해주면 되겠습니다.

정말 간단하죠?

[참고 문서]

 

앱에 스와이프하여 새로고침 추가  |  Android 개발자  |  Android Developers

스와이프하여 새로고침하는 사용자 인터페이스의 패턴은 SwipeRefreshLayout 위젯 내에서 전적으로 구현되며 이 위젯은 세로 스와이프를 감지하고 고유의 진행률 표시줄을 표시하며 앱에서 콜백 메�

developer.android.com

 

 

Swiperefreshlayout  |  Android 개발자  |  Android Developers

스와이프하여 새로고침 UI 패턴을 구현합니다. 최근 업데이트 현재 안정화 출시 다음 출시 후보 베타 출시 알파 출시 2020년 6월 24일 1.1.0 - - - 종속 항목 선언 SwipeRefreshLayout의 종속 항목을 추가하�

developer.android.com

 

반응형