在 Android 專案中使用 PullToRefresh 框架(如 Chris Banes 版本)實現 ListView 的下拉刷新與上拉載入,並解析 JSON 資料綁定顯示,是常見需求。以下為關鍵實作步驟:
在 build.gradle 加入依賴(或手動匯入 Library 專案),佈局檔使用 PullToRefreshListView 取代原生 ListView。
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pull_refresh_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
ptr:ptrMode="both" />
PullToRefreshListView mPullListView = findViewById(R.id.pull_refresh_list);
mPullListView.setMode(Mode.BOTH);
mPullListView.setOnRefreshListener(new OnRefreshListener2() {
@Override
public void onPullDownToRefresh(PullToRefreshBase refreshView) {
loadData(true); // 重新載入第一頁
}
@Override
public void onPullUpToRefresh(PullToRefreshBase refreshView) {
loadData(false); // 載入下一頁
}
});
在 loadData() 中發送網路請求,解析 JSON 陣列轉為實體物件清單,更新 BaseAdapter 並呼叫 onRefreshComplete()。
private void parseJson(String json) {
try {
JSONArray array = new JSONArray(json);
for (int i = 0; i < array.length(); i++) {
JSONObject obj = array.getJSONObject(i);
Item item = new Item();
item.title = obj.getString("title");
item.content = obj.getString("content");
mDataList.add(item);
}
mAdapter.notifyDataSetChanged();
} catch (JSONException e) { e.printStackTrace(); }
}