1. 程式人生 > >PullToRefreshListView重新整理資料和適配

PullToRefreshListView重新整理資料和適配

PullToRefreshListView控制元件和PullToRefreshGridView控制元件,,,,一樣使用,,,,,都一樣;

PullToRefreshListView設定監聽事件是:

/**
 * 如果Mode設定成Mode.BOTH,需要設定重新整理Listener為OnRefreshListener2,並實現onPullDownToRefresh()、
 * onPullUpToRefresh()兩個方法。
 如果Mode設定成Mode.PULL_FROM_START或Mode.PULL_FROM_END,需要設定重新整理Listener為OnRefreshListener,
 同時實現onRefresh()方法。
 當然也可以設定為OnRefreshListener2,但是Mode.PULL_FROM_START的時候只調用onPullDownToRefresh()方法,
 Mode.PULL_FROM_END的時候只調用onPullUpToRefresh()方法
 */
refresh_list_view.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {

    @Override
    //下拉重新整理的時候呼叫的方法....請求第一頁的資料,清空之前的資料,然後再新增設定介面卡
    public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
         getRefreshData();
    }

    @Override
    //上拉重新整理的時候呼叫的方法..page++,然後在請求資料
    public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
        //上拉重新整理/載入...載入的時候頁數++
          i++;
        getDataFromNet();
    }
});

上面呼叫的getRefeshData方法

public void getRefreshData() {
    String path="http://gank.io/api/data/Android/10/"+i;
    //第一個上下文,第二個引數是介面,第三個回撥json資料
    NetDataUtil.getto(getActivity(), path, new JsonCallBack() {
        @Override
        public void getjson(String json) {
            //解析
            Gson gson = new Gson();
            Data data = gson.fromJson(json, Data.class);
            //先清空一下資料
            list.clear();
            //新增到後面
            list.addAll(0,data.getResults()) ;
            //設定介面卡
            setadapter();
            //設定介面卡之後停止重新整理的操作
            refresh_list_view.onRefreshComplete();
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日    HH:mm:ss");
            Date curDate    =   new Date(System.currentTimeMillis());//獲取當前時間
            String    str    =    formatter.format(curDate);
            startLabels.setLastUpdatedLabel("上次重新整理時間:"+str);
        }


    });
}

設定重新整理模式

/*設定pullToRefreshListView的重新整理模式,BOTH代表支援上拉和下拉,
PULL_FROM_END代表上拉,PULL_FROM_START代表下拉 */
//設定重新整理模式
refresh_list_view.setMode(PullToRefreshBase.Mode.BOTH);

重新整理時狀態區別

/*3.通過getLoadingLayoutProxy 方法來指定上拉和下拉時顯示的狀態的區別
(也就是設定向下拉的時候頭部裡面顯示的文字)*/
//此時這裡設定的是下拉重新整理的時候顯示的文字,所以第一個設定true表示現在是重新整理,第二個設定為false
startLabels = refresh_list_view
        .getLoadingLayoutProxy(true, false);
startLabels.setPullLabel("下拉重新整理");
startLabels.setRefreshingLabel("正在拉");
startLabels.setReleaseLabel("放開重新整理");
ILoadingLayout endLabels = refresh_list_view.getLoadingLayoutProxy(
        false, true);
endLabels.setPullLabel("上拉重新整理");
endLabels.setRefreshingLabel("正在載入...");
endLabels.setReleaseLabel("放開重新整理...");

設定介面卡後停止重新整理

上拉和下拉都一樣

//設定介面卡之後停止重新整理的操作
refresh_list_view.onRefreshComplete();

設定時間重新整理

SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日    HH:mm:ss");
Date curDate    =   new Date(System.currentTimeMillis());//獲取當前時間
String    str    =    formatter.format(curDate);
startLabels.setLastUpdatedLabel("上次重新整理時間:"+str);