เอกสารนี้แสดงวิธีอัปเดตแอปเมื่อผู้ใช้ขอคู่มือ รีเฟรช ไม่ว่าผู้ใช้จะเรียกใช้ด้วยท่าทางสัมผัสการปัดหรือใช้แถบการดำเนินการ รีเฟรช
ตอบสนองต่อท่าทางสัมผัสการรีเฟรช
เมื่อผู้ใช้ทำท่าทางสัมผัสแบบปัดเพื่อรีเฟรช ระบบจะแสดง ตัวบอกสถานะความคืบหน้าและเรียกเมธอด Callback ของแอปของคุณ วิธีติดต่อกลับของคุณคือ มีหน้าที่อัปเดตข้อมูลของแอป
หากต้องการตอบสนองต่อท่าทางสัมผัสการรีเฟรชในแอป ให้ใช้
SwipeRefreshLayout.OnRefreshListener
อินเทอร์เฟซและอินเทอร์เฟซ
วันที่ onRefresh()
จะมีการเรียกใช้เมธอด onRefresh()
เมื่อผู้ใช้ดำเนินการ
ท่าทางสัมผัสการปัด
วางโค้ดสำหรับการดำเนินการอัปเดตจริงในอีกวิธีการหนึ่ง ถ้าเป็นไปได้
ใน ViewModel
และเรียกเมธอดการอัปเดตนั้นจาก
การใช้งาน onRefresh()
ซึ่งทำให้คุณใช้การอัปเดตเดียวกันนี้ได้
ในการดำเนินการอัปเดตเมื่อผู้ใช้ทริกเกอร์การรีเฟรชจากการดำเนินการ
แถบ
ในวิธีการอัปเดต ให้เรียก
setRefreshing(false)
เมื่ออัปเดตข้อมูลเสร็จ การเรียกใช้วิธีการนี้จะสั่งให้ฟังก์ชัน
SwipeRefreshLayout
เพื่อนำสัญญาณบอกสถานะความคืบหน้าออกและอัปเดตเนื้อหาของมุมมอง
ตัวอย่างเช่น โค้ดต่อไปนี้ใช้ onRefresh()
และ
เรียกใช้เมธอด myUpdateOperation()
เพื่ออัปเดตข้อมูลที่แสดง
โดย
ListView
:
Kotlin
// Sets up a SwipeRefreshLayout.OnRefreshListener that invokes when // the user performs a swipe-to-refresh gesture. mySwipeRefreshLayout.setOnRefreshListener { Log.i(LOG_TAG, "onRefresh called from SwipeRefreshLayout") // This method performs the actual data-refresh operation and calls // setRefreshing(false) when it finishes. myUpdateOperation() }
Java
// Sets up a SwipeRefreshLayout.OnRefreshListener that is invoked when // the user performs a swipe-to-refresh gesture. mySwipeRefreshLayout.setOnRefreshListener(() -> { Log.i(LOG_TAG, "onRefresh called from SwipeRefreshLayout"); // This method performs the actual data-refresh operation and calls // setRefreshing(false) when it finishes. myUpdateOperation(); } );
ตอบสนองต่อการดำเนินการรีเฟรช
หากผู้ใช้ขอให้รีเฟรชโดยใช้แถบการทำงาน ระบบจะเรียกใช้เมธอด
onOptionsItemSelected()
แอปของคุณตอบสนองต่อการโทรนี้โดยแสดงสัญญาณบอกสถานะความคืบหน้าและ
การรีเฟรชข้อมูลของแอป
หากต้องการตอบสนองต่อการดำเนินการรีเฟรช ให้ลบล้าง
onOptionsItemSelected()
ในเมธอดการลบล้าง ให้ทริกเกอร์
สัญญาณบอกสถานะความคืบหน้าของ SwipeRefreshLayout
จากการโทร
setRefreshing()
ด้วยค่า true
แล้วดำเนินการตาม
อัปเดต ดำเนินการอัปเดตจริงด้วยวิธีอื่น ดังนั้น
สามารถเรียกได้ว่าผู้ใช้จะเรียกใช้การอัปเดตด้วยการปัดหรือใช้
แถบการดำเนินการ เมื่ออัปเดตเสร็จ โปรดโทรหา setRefreshing(false)
เพื่อนำสัญญาณบอกสถานะของการรีเฟรชออก
โค้ดต่อไปนี้แสดงวิธีตอบกลับการดำเนินการตามคำขอ
Kotlin
// Listen for option item selections to receive a notification when the user // requests a refresh by selecting the refresh action bar item. override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { // Check whether the user triggers a refresh: R.id.menu_refresh -> { Log.i(LOG_TAG, "Refresh menu item selected") // Signal SwipeRefreshLayout to start the progress indicator. mySwipeRefreshLayout.isRefreshing = true // Start the refresh background task. This method calls // setRefreshing(false) when it finishes. myUpdateOperation() return true } } // User doesn't trigger a refresh. Let the superclass handle this action. return super.onOptionsItemSelected(item) }
Java
// Listen for option item selections to receive a notification when the user // requests a refresh by selecting the refresh action bar item. @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Check whether the user triggers a refresh: case R.id.menu_refresh: Log.i(LOG_TAG, "Refresh menu item selected"); // Signal SwipeRefreshLayout to start the progress indicator. mySwipeRefreshLayout.setRefreshing(true); // Start the refresh background task. This method calls // setRefreshing(false) when it finishes. myUpdateOperation(); return true; } // User doesn't trigger a refresh. Let the superclass handle this action. return super.onOptionsItemSelected(item); }