当前位置: 移动技术网 > IT编程>移动开发>Android > Android实战教程第四十三篇之上拉加载与下拉刷新

Android实战教程第四十三篇之上拉加载与下拉刷新

2019年07月24日  | 移动技术网IT编程  | 我要评论

魏三歌曲北郊,导航手机大全,1861图库

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小文

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网