主流方案對比
| 方案 | 特點 | 維護狀態 |
Chris Banes Android-PullToRefresh | 支持 ListView/GridView/ScrollView/WebView,動畫流暢,API 穩定 | 早期停止更新,但極其成熟 |
SwipeRefreshLayout (官方) | Material Design 風格,僅支持單一可滾動子視圖,需 API 14+ | 持續維護,推薦新項目 |
SmartRefreshLayout | 功能最全(雙向、Header/Footer 自定義、嵌套滾動),Kotlin 友好 | 活躍維護,現代項目首選 |
| XListView | 早期經典,代碼侵入性強(繼承 ListView) | 基本不再維護 |
推薦:SmartRefreshLayout
// build.gradle
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-22'
// XML
// Java/Kotlin
refreshLayout.setOnRefreshListener(refreshLayout -> {
// 請求數據
loadData(() -> refreshLayout.finishRefresh());
});
選型建議
- 新項目、需複雜 Header/Footer、Kotlin:**SmartRefreshLayout**。
- 簡單 Material 風格、不想加三方庫:**SwipeRefreshLayout**。
- 維護舊項目、已用 PullToRefresh:**繼續使用或遷移**。