多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > 綜合技術(shù) > ListView滾動到底部自動加載數(shù)據(jù)

ListView滾動到底部自動加載數(shù)據(jù)

來源:程序員人生   發(fā)布時間:2014-12-19 08:16:01 閱讀次數(shù):4447次

在Android中有很多時候會選擇用ListView加載數(shù)據(jù),有的是分批加載,比如每次加載20條,100條就要加載5次,如果1次性加載100條,ListView加載就會變慢,如果是有圖片的話,1是浪費流量,2是item中帶圖片會出現(xiàn)錯位的問題l,ListView加載數(shù)據(jù)目前好多App的做法

1. 分批加載,滑動到底部自動更新

2. 滑動到底部,手動的點擊加載更多

3. 下拉刷新 + 底部加載更多

今天實現(xiàn)ListView滑動到底部自動更新的效果。

原理:監(jiān)聽ListView的滑動事件,判斷ListView是不是滑動到底部,然后去加載數(shù)據(jù)。

[java] view plaincopyprint?
  1. public class MainActivity extends Activity {  
  2.     private ListView listview;  
  3.     private List<String> datas;  
  4.     private LayoutInflater inflater;  
  5.     private MyAdapter adapter;  
  6.     private List<String>  contents;  
  7.     private int count = 0;  
  8.     private View footView;  
  9.     private Handler handler = new Handler();  
  10.     int lastItem;  
  11.     private RelativeLayout loading;  
  12.     @Override  
  13.     protected void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         setContentView(R.layout.activity_main);  
  16.         initData();  
  17.         inflater = LayoutInflater.from(this);  
  18.         listview = (ListView) findViewById(R.id.listview);  
  19.         adapter = new MyAdapter();  
  20.         footView = inflater.inflate(R.layout.footer, null);  
  21.         loading = (RelativeLayout) footView.findViewById(R.id.loading);  
  22.         //listview的addFooterView()添加view到listview底部1定要加在listview.setAdapter(adapter);這代碼前面  
  23.         listview.addFooterView(footView);  
  24.         listview.setAdapter(adapter);  
  25.         //添加listview轉(zhuǎn)動監(jiān)聽  
  26.         listview.setOnScrollListener(new OnScrollListener() {  
  27.             //AbsListView view 這個view對象就是listview  
  28.             @Override  
  29.             public void onScrollStateChanged(AbsListView view, int scrollState) {  
  30.                 if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {  
  31.                     if (view.getLastVisiblePosition() == view.getCount() - 1) {  
  32.                         loadData();  
  33.                     }  
  34.                 }  
  35.             }  
  36.             @Override  
  37.             public void onScroll(AbsListView view, int firstVisibleItem,  
  38.                     int visibleItemCount, int totalItemCount) {  
  39.                    lastItem = firstVisibleItem + visibleItemCount - 1 ;  
  40.             }  
  41.         });  
  42.     }  
  43.     protected void loadData() {  
  44.         loading.setVisibility(View.VISIBLE);  
  45.         handler.postDelayed(new Runnable() {  
  46.             @Override  
  47.             public void run() {  
  48.                  load();  
  49.                  loading.setVisibility(View.GONE);  
  50.                  adapter.notifyDataSetChanged();  
  51.             }  
  52.         }, 5000);  
  53.     }  
  54.     protected void load() {  
  55.         int count = adapter.getCount() + 1;  
  56.         for(int i = count; i < count + 20; i++) {  //每次加載20條數(shù)據(jù)
  57.              contents.add("加載數(shù)據(jù):::" + i);  
  58.         }  
  59.     }  
  60.     private void initData() {  
  61.         contents = new ArrayList<String>();  
  62.         for(int i = 1; i < 20; i++){  
  63.             contents.add("加載數(shù)據(jù):::" + i);  
  64.         }  
  65.     }  
  66.       
  67.     class MyAdapter extends BaseAdapter{  
  68.         @Override  
  69.         public int getCount() {  
  70.             return contents.size();  
  71.         }  
  72.         @Override  
  73.         public Object getItem(int position) {  
  74.             return contents.get(position);  
  75.         }  
  76.   
  77.         @Override  
  78.         public long getItemId(int position) {  
  79.             return position;  
  80.         }  
  81.   
  82.         @Override  
  83.         public View getView(int position, View convertView, ViewGroup parent) {  
  84.             ViewHolder holder;  
  85.             if(convertView ==  生活不易,碼農(nóng)辛苦
    如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
    程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
為碼而活
積分:4237
15粉絲
7關(guān)注
欄目熱點
關(guān)閉
程序員人生
主站蜘蛛池模板: 亚洲免费黄色 | 纯欧美一级毛片_免费 | 久久艹综合| 国产最新进精品视频 | 交性大片欧美网 | 最近免费中文字幕大全高清10 | 在线免费观看www | 牛站一级欧美大片 | 加勒比一道本综合 | 手机看片国产免费久久网 | 欧美在线网站 | 久草成人网 | 真实国产乱人伦在线视频播放 | riav久久中文一区二区 | 精品欧美成人高清在线观看2021 | 亚洲日韩精品欧美一区二区 | 成人性欧美丨区二区三区 | a资源在线 | 一级一级特黄女人精品毛片 | 欧美 xx性 在线 | 手机一级片 | 亚洲色图校园春色 | 欧美久久超级碰碰碰二区三区 | 操穴网| 欧美中文字幕 | 欧美性一区二区三区 | 国产91精品高清一区二区三区 | 国产欧美日韩另类一区乌克兰 | 香蕉高清免费永久在线视频 | 性欧美video视频另类 | 最新国产福利片在线观看 | 自拍偷拍亚洲图片 | 久久国产一久久高清 | 日韩中文精品亚洲第三区 | 春色精品视频在线播放 | 男人把大ji巴放进男人免费视频 | 最近的最新的中文字幕视频 | 日韩欧美区| 欧美成人亚洲国产精品 | 在线观看中文字幕国产 | 一级毛片一片毛 |