ListView下拉刷新功能的简单实现(慕课网视频总结 ,已测试实现)

ListView的下拉刷新功能应该是现在应用最广泛的功能了,手机屏幕毕竟有限,不能同一时间加载所有数据,需要我们及时刷新,而现在下拉刷新功能的实现就会解决这个问题,因此,本博文就ListView的下拉刷新功能的具体实现展开叙述,也将自己已经真机测试通过的代码奉上,当然还有截图啦~~~
我的代码是建立在上篇博文已经实现的ListView的适配基础上进行修改的,注释都有,需要的直接拿走,下边直接上代码啦~~~
MainActivity.java:
    package com.example.listviewpushtorefresh;

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

import com.example.listviewpushtorefresh.RefreshListView.IReflashListener;

import bean.Person;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ListView;

public class MainActivity extends Activity implements IReflashListener {
   

    private RefreshListView listview;
    MyAdapter adapter;
    List<Person> list= new ArrayList<Person>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listview = (RefreshListView) findViewById(R.id.listview);
        listview.setInterface(this);
        adapter = new MyAdapter(MainActivity.this,0,getData());
        listview.setAdapter(adapter);
    }
    private List<Person> getData() {
        // TODO Auto-generated method stub

        for(int i=0;i<20;i++)
        {
            Person p = new Person(R.drawable.ic_launcher,i+"","我是第"+i+"项");
            list.add(p);
        }
        return list;
    }

    private List<Person> getReflashData() {
        // TODO Auto-generated method stub
//      List<Person> list= new ArrayList<Person>();
        for(int i=0;i<2;i++)
        {
            Person p = new Person(R.drawable.ic_launcher,i+"","我是第"+i+"项刷新数据");
            list.add(i,p);
        }
        return list;
    }

    @Override
    public void onReflash() {
        // TODO Auto-generated method stub
        Handler handler = new Handler();
        handler.postDelayed(new Runnable(){

            @Override
            public void run() {
                // TODO Auto-generated method stub
                //获取最新数据
                getReflashData();
                //通知界面显示
                showList(getReflashData());
                //通知listview刷新数据完毕
                listview.reflashComplete();

            }}, 2000);


    }

   private void showList(List<Person> objects){
       if(adapter == null){
           listview.setInterface(this);
           adapter=new MyAdapter(MainActivity.this,0,getReflashData());
           listview.setAdapter(adapter);

       }else{
           adapter.onDateChanger(getReflashData());
       }
   }


}

自定义的RefreshListView,继承于ListView,RefreshListView.java:

package com.example.listviewpushtorefresh;

import java.text.SimpleDateFormat;
import java.util.Date;

import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.RotateAnimation;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;

/**   
*    
* 项目名称:ListViewPushToRefresh   
* 类名称:RefreshListView   
* 类描述:   
* 创建人:dell   
* 创建时间:2016年3月3日 下午8:37:56   
* 修改人:dell   
* 修改时间:2016年3月3日 下午8:37:56   
* 修改备注:   
* @version    
*    
*/
public class RefreshListView extends ListView implements OnScrollListener{
   
    private static final int REFRESHING = 0;
    View header;//顶部布局文件
    int headerHeight;//顶部布局文件的高度
    int firstVisibleItem;//当前第一个可见的item的位置
    boolean isRemark;//标记,当前是在listview的最顶端摁下的
    int startY;//摁下是的Y值
    int state;//当前的状态
    final int NONE=0;//正常状态
    final int PULL=1;//提示下拉状
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值