흔히 앱을 사용하다가 보면 화면에서 위에서 아래로 화면을 당겨서 새로고침을 경험해본 적 있을 것이다.
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를 설정)
'안드로이드' 카테고리의 다른 글
Android - Parcelable 정리 (0) | 2020.04.22 |
---|---|
Android - Xml 파싱(XmlPullParser) (0) | 2020.04.06 |
Android Data Binding을 활용한 ViewPager와 TabLayout 연결 (0) | 2020.03.24 |
안드로이드 크롤링(Crawling)하기 (Jsoup Library 활용) (0) | 2020.03.20 |
안드로이드에서 주소를 좌표로 변환 하기(GeoCoder) (0) | 2020.03.19 |