中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Android中ListView上拉加載更多及下拉刷新

2018-07-20    來源:open-open

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

        做幾乎每一個Android應(yīng)用開發(fā),都少不了用到一個控件,那就是ListView,用于加載多條數(shù)據(jù),并用一定的樣式展示出來。但是為了性能問題(一 次性加載太多數(shù)據(jù),比如100000條,耗費(fèi)時(shí)間長,消耗資源多等)及用戶體驗(yàn)問題(比如用戶只想看最新的10條數(shù)據(jù),結(jié)果一下子把所有的上萬條數(shù)據(jù)都加 載了,不方便用戶選擇)等原因,所以我們要把ListView的數(shù)據(jù)進(jìn)行分頁加載,常用的就是ListView的上拉加載更多及下拉刷新最新數(shù)據(jù)。

      我們可以自己封裝一個帶上下拉功能的ListView,通常就是加上頭部HeaderView和底部FooterView,然后通過顯示的數(shù)據(jù)條數(shù)與總數(shù) 據(jù)條數(shù)據(jù)判斷是否可以上拉,再用相應(yīng)的監(jiān)聽來實(shí)現(xiàn)上下拉刷新操作,這些網(wǎng)上有大把資料。今天貼的代碼是在工作中用到的,已經(jīng)有開源庫封裝好的開源控件 PullToRefreshListView。其實(shí)源碼下載地址是:https://github.com/chrisbanes/Android-PullToRefresh ,詳細(xì)用法可以點(diǎn)擊查看。

      PullToRefreshListView的用法很簡單,同ListView是一樣的,要給其提供數(shù)據(jù)的適配器Adapter,然后setAdapter()以及點(diǎn)擊事件都是一樣的。我把我在工作中用到的上下拉刷新實(shí)現(xiàn)代碼簡單貼出來,做個筆記:

privatePullToRefreshListView freshListView;

privateBeforeRecordAdapter adapter;

@Override
      protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);

setContentView(R.layout.......);

 

freshListView= (PullToRefreshListView) findViewById(R.id.period_record_lv);//所在頁面布局文件中對應(yīng)PullToRefreshListView 
           freshListView.setMode(Mode.BOTH);//模式為上下拉

/* 
         * Mode.BOTH:同時(shí)支持上拉下拉 
         *Mode.PULL_FROM_START:只支持下拉Pulling Down 
         *Mode.PULL_FROM_END:只支持上拉Pulling Up 
         * 如果Mode設(shè)置成Mode.BOTH,需要設(shè)置刷新Listener為OnRefreshListener2,并實(shí)現(xiàn)                     onPullDownToRefresh()、onPullUpToRefresh()兩個方法。 
         * 如果Mode設(shè)置成Mode.PULL_FROM_START或Mode.PULL_FROM_END,需要設(shè)置刷新Listener為OnRefreshListener,同時(shí)實(shí)現(xiàn)onRefresh()方法。 
         * 當(dāng)然也可以設(shè)置為OnRefreshListener2,但是Mode.PULL_FROM_START的時(shí)候只調(diào)用onPullDownToRefresh()方法, 
         * Mode.PULL_FROM的時(shí)候只調(diào)用onPullUpToRefresh()方法. 
         */

freshListView.setOnRefreshListener(newOnRefreshListener2<ListView>() {
                 @Override
                 public voidonPullDownToRefresh(PullToRefreshBase<ListView> arg0) {

//下拉刷新實(shí)現(xiàn)

CURRENT_PAGE= 1;//分頁加載,下拉刷新的都是第1頁的數(shù)據(jù)
                      getData();//從服務(wù)器取數(shù)據(jù)
                 }

                 @Override
                 public voidonPullUpToRefresh(PullToRefreshBase<ListView> arg0) {

//上拉加載更多
                      CURRENT_PAGE++;//分頁加載,上拉加載下一頁面數(shù)據(jù)
                      getData();//從服務(wù)器取數(shù)據(jù)
                 }
           });
           adapter = new BeforeRecordAdapter(this);//適配器
           freshListView.setAdapter(adapter);//設(shè)置數(shù)據(jù)
           freshListView.setOnItemClickListener(beforeItemClick);//item點(diǎn)擊事件

}

//加載服務(wù)器數(shù)據(jù),或是自己構(gòu)造數(shù)據(jù)

privatevoid  getData(){

//首先是獲取到請求的數(shù)據(jù),計(jì)算出數(shù)據(jù)的數(shù)量totalSize

//然后根據(jù)totalSize來判斷freshListView應(yīng)該處理哪種模式,比如數(shù)據(jù)加載完了就不能再上拉刷新

if(totalSize == 0) {
                 freshListView.setMode(Mode.DISABLED);
           } else if (adapter.getCount() >= totalSize) {
                 freshListView.setMode(Mode.PULL_FROM_START);
           } else {
                 freshListView.setMode(Mode.BOTH);
           }
           freshListView.onRefreshComplete();

}

 這樣就可以簡單地實(shí)現(xiàn)上下拉功能,當(dāng)然如果原來的刷新或加載樣式不滿意,可以自己改寫就可以啦!

標(biāo)簽: 代碼 服務(wù)器

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:Java使用gzip對字符串進(jìn)行壓縮和解壓縮

下一篇:Java處理日期時(shí)間的示例大全