国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android實戰教程第四十三篇之上拉加載與下拉刷新

2019-12-12 04:38:27
字體:
來源:轉載
供稿:網友

ListView的下拉刷新很常見,很多開源的框架都能做到這個效果,當然也可以自己去實現。本篇案例是基于xlistview的。

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:layout_height="match_parent" >   <me.maxwin.view.XListView   android:id="@+id/xlv"   android:layout_width="match_parent"   android:layout_height="match_parent" />  </RelativeLayout> 

主活動的代碼:

package com.itydl.xlistviewdemo;  import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List;  import me.maxwin.view.XListView; import me.maxwin.view.XListView.IXListViewListener; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.SystemClock; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView;  public class MainActivity extends Activity {   private XListView mXListView;  List<String> datas = new ArrayList<String>();  private MyAdapter adapter;  private boolean isLoadMore;//是否正在加載更多數據的標記    private long preTime;//上一次刷新的當前系統時間毫秒值  private Handler handler = new Handler(){   public void handleMessage(android.os.Message msg) {    if(isLoadMore){     //消息是上拉加載更多     initDatas();     isLoadMore = false;     //刷新完畢,關閉上拉加載效果     mXListView.stopLoadMore();    }else{     //消息是下拉刷新     datas.clear();     initDatas();     //刷新完畢,關閉下拉刷新效果     mXListView.stopRefresh();    }    // 刷新listview    adapter.notifyDataSetChanged();   };  };   @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);   initDatas();   mXListView = (XListView) findViewById(R.id.xlv);   //設置適配器到ListView   adapter = new MyAdapter();   mXListView.setAdapter(adapter);   initListener();  }    private void initListener() {   //設置可以下拉刷新,默認就是true   mXListView.setPullRefreshEnable(true);      //設置可以上拉加載,默認是false   mXListView.setPullLoadEnable(true);      mXListView.setXListViewListener(new IXListViewListener() {        @Override    public void onRefresh() {     // 下拉刷新,實際發送Handler     //發送一個空消息,延遲兩秒后告知刷新數據     handler.sendMessageDelayed(Message.obtain(), 2000);     //添加上一次刷新的時間:     if(preTime != 0){      mXListView.setRefreshTime(refreshData(preTime));     }     preTime = System.currentTimeMillis();    }     private String refreshData(long preTime) {     return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(preTime));    }     @Override    public void onLoadMore() {     //標記正在加載更多,發送Handler     isLoadMore = true;     handler.sendMessageDelayed(Message.obtain(), 2000);    }   });  }   /**模擬網絡數據*/  private void initDatas() {   //實際開發應該子線程執行   for (int i = 0; i < 50; i++) {    datas.add("我是第" + i + "條數據");   }  }   private class MyAdapter extends BaseAdapter{    @Override   public int getCount() {    if(datas != null){     return datas.size();    }    return 0;   }    @Override   public Object getItem(int position) {    if(datas != null){     return datas.get(position);    }    return null;   }    @Override   public long getItemId(int position) {    return position;   }    @Override   public View getView(int position, View convertView, ViewGroup parent) {    //模擬item為TextView    TextView textView = new TextView(MainActivity.this);    textView.setText(getItem(position)+"");    textView.setTextColor(Color.GREEN);    return textView;   }  } } 

短短幾行代碼已經完成了主要功能,運行如下:

喜歡的朋友可以關注我哦,本專欄會不定期更新簡單有趣的Android小文

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 葵青区| 雷州市| 徐汇区| 承德县| 双桥区| 盐城市| 永新县| 铁岭市| 麟游县| 钟祥市| 宜宾市| 扶余县| 龙井市| 普安县| 南城县| 安徽省| 安乡县| 万安县| 茶陵县| 拉萨市| 突泉县| 元江| 南岸区| 大连市| 红河县| 轮台县| 习水县| 邢台县| 广丰县| 锡林浩特市| 边坝县| 城市| 大同市| 离岛区| 南漳县| 海晏县| 偃师市| 泸溪县| 淮南市| 民和| 巴青县|