본문 바로가기

안드로이드

Android - 화면 당겨서 새로고치는 방법(SwipeRefreshLayout 사용 방법)

흔히 앱을 사용하다가 보면 화면에서 위에서 아래로 화면을 당겨서 새로고침을 경험해본 적 있을 것이다.

Android는 해당 기능을 구현한 SwipeRefreshLayout을 제공하고 있으며, SwipeRefreshLayout을 생성 후 리스너 설정을 통해 원하는 결과를 얻을 수 있다.

 

1. build.gradle에 종속성 추가

dependdencies {
...
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
...
}

 

2. 새로고침을 할 뷰 영역을 SwipeRefreshLayout으로 감싼다.

<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/lo_refresh_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rv_list_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

 

3. SwipeRefreshLayout에 setOnRefreshListener(listener: OnRefreshListener?) 메서드를 통해 리스너를 달아준다.

fun setRefresh(refreshLayout: SwipeRefreshLayout) {
    refreshLayout.setOnRefreshListener {
        //사용자가 화면을 위에서 아래로 당겼을 때 호출됨
    }
}

 

※ 주의사항 : SwipeRefreshLayout을 사용해서 화면 새로고침을 구현할 경우, 반드시 setRefreshing(refreshing: Boolean) 메서드를 통해 새로고침이 끝났을 경우 false로 세팅해야 한다. (Boolean 값으로 상단에 원형 ProgressBar의 Visibility를 설정)