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

Android 上拉刷新列表數(shù)據(jù)

2018-07-20    來(lái)源:open-open

容器云強(qiáng)勢(shì)上線(xiàn)!快速搭建集群,上萬(wàn)Linux鏡像隨意使用
   android開(kāi)發(fā)中,listview是最常用的控件之一,通常我們可以再微博、微信等很多應(yīng)用里面都可以看到下拉刷新,以及上拉刷新,點(diǎn)擊查看更多等功能。這里介紹下說(shuō)下上拉刷新。
  上拉刷新其實(shí)和底部的“點(diǎn)擊加載更多”的功能差不多。都是分頁(yè)加載數(shù)據(jù)的一個(gè)實(shí)現(xiàn)。具體是去監(jiān)聽(tīng)滾動(dòng)條事件,下拉到底部時(shí)進(jìn)行操作。
這里直接上代碼
 
package com.xzw.demo;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;


public class MainActivity extends Activity implements OnScrollListener {
        
        private static final String TAG = "MainActivity";
        
        private ListView listView;
        private View moreView; //加載更多頁(yè)面
        
        private SimpleAdapter adapter;
        private ArrayList<HashMap<String, String>> listData;
        
        private int lastItem;
    private int count;
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        listView = (ListView)findViewById(R.id.listView);
        moreView = getLayoutInflater().inflate(R.layout.load, null);
        listData = new ArrayList<HashMap<String,String>>();
        
        prepareData(); //準(zhǔn)備數(shù)據(jù)
        count = listData.size();
     
        adapter = new SimpleAdapter(this, listData,R.layout.item, 
                        new String[]{"itemText"}, new int[]{R.id.itemText});
        
        listView.addFooterView(moreView); //添加底部view,一定要在setAdapter之前添加,否則會(huì)報(bào)錯(cuò)。
        
        listView.setAdapter(adapter); //設(shè)置adapter
        listView.setOnScrollListener(this); //設(shè)置listview的滾動(dòng)事件
    }


    private void prepareData(){  //準(zhǔn)備數(shù)據(jù)
            for(int i=0;i<10;i++){
                    HashMap<String, String> map = new HashMap<String, String>();
                    map.put("itemText", "測(cè)試數(shù)據(jù)"+i);
                    listData.add(map);
            }
            
    }
    
    private void loadMoreData(){ //加載更多數(shù)據(jù)
             count = adapter.getCount(); 
            for(int i=count;i<count+5;i++){
                    HashMap<String, String> map = new HashMap<String, String>();
                    map.put("itemText", "測(cè)試數(shù)據(jù)"+i);
                    listData.add(map);
            }
            count = listData.size();
    }


        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                        int visibleItemCount, int totalItemCount) {
                
                Log.i(TAG, "firstVisibleItem="+firstVisibleItem+"\nvisibleItemCount="+
                                visibleItemCount+"\ntotalItemCount"+totalItemCount);
                
                lastItem = firstVisibleItem + visibleItemCount - 1;  //減1是因?yàn)樯厦婕恿藗(gè)addFooterView
                
        }


        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) { 
                Log.i(TAG, "scrollState="+scrollState);
                //下拉到空閑是,且最后一個(gè)item的數(shù)等于數(shù)據(jù)的總數(shù)時(shí),進(jìn)行更新
                if(lastItem == count  && scrollState == this.SCROLL_STATE_IDLE){ 
                        Log.i(TAG, "拉到最底部");
                        moreView.setVisibility(view.VISIBLE);
                 
                    mHandler.sendEmptyMessage(0);
                         
                }
                
        }
        //聲明Handler
        private Handler mHandler = new Handler(){
                public void handleMessage(android.os.Message msg) {
                        switch (msg.what) {
                        case 0:
                             
                                try {
                                        Thread.sleep(3000);
                                } catch (InterruptedException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                            loadMoreData();  //加載更多數(shù)據(jù),這里可以使用異步加載
                            adapter.notifyDataSetChanged();
                            moreView.setVisibility(View.GONE); 
                            
                            if(count > 30){
                                    Toast.makeText(MainActivity.this, "木有更多數(shù)據(jù)!", 3000).show();
                                  listView.removeFooterView(moreView); //移除底部視圖
                            }
                                Log.i(TAG, "加載更多數(shù)據(jù)");
                                break;
            case 1:
                                
                                break;
                        default:
                                break;
                        }
                };
        };
    
} 


代碼:

標(biāo)簽: 代碼

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

上一篇: android-cardview簡(jiǎn)單使用

下一篇:Java去掉字符串中所有的標(biāo)簽,獲取純文本內(nèi)容