- Swiperefreshlayout은 사용자가 수동으로 업데이트 를 요청할 수 있도록 합니다
- Swiperefreshlayout이 적용되어 있는 Activity에 그림처럼 수직으로 pull하면 업데이트가 트리거된다.
종속성 추가
dependencies { implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") }
xml 예시
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/refreshlayout"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:id="@+id/refresh_cnt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textSize="30sp"
android:textColor="#000"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="번째 새로고침입니다"
android:textSize="30sp"
android:textColor="#000"/>
</LinearLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
Activity
refresh_layout.setOnRefreshListener {
// 새로고침 코드를 작성
var data = MainData("refresh", "refreshing completed")
recyclerViewAdapter.add(data)
recyclerViewAdapter.notifyDataSetChanged()
// 새로고침 완료시,
// 새로고침 아이콘이 사라질 수 있게 isRefreshing = false
refreshlayout.isRefreshing = false
}
swiperefreshlayout 는 맨 바깥쪽 Layout에 주로 위치하면서
사용자가 데이터를 새롭게 notifyDataSetChanged() 해서 새로운 데이터를 받을 수 있게 한다. 주로 API 호출 하는 프로그래밍 에서 많이 사용됩니다.