实用的下拉刷新上拉加载数据功能

大家一定都注意过 淘宝呀  天猫一些购物网站 的 商品 下拉 刷新信息 上拉  加载商品详情

看效果 


这里昵  我们 用XListView包 复制些配置代码 来实现这些功能

首先  准备工作  要有XListView包     我们创建个项目 如Demos  然后 把me.maxwei.view包下的java文件的R路径换成你的包路径就可以了

XML中main  的ListView后就ok

接下来就看主MainActivity的代码了

注意的是 实现implements IXListViewListener  中的两方法 看代码

package com.example.demos;

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



import me.maxwin.view.XListView;
import me.maxwin.view.XListView.IXListViewListener;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.Toast;

public class MainActivity extends Activity implements IXListViewListener {

    private XListView lv;
    private ArrayAdapter<String> adapter;
    private Handler hand;
    private List<String> li= new ArrayList<String>();
    private int num = 18;// 设置初始数据有18条

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 加载数据
        getdata();
        // ListView
        lv = (XListView) findViewById(R.id.lv);
        // 配置信息
        lv.setPullLoadEnable(true);// 支持下拉加载数据
        lv.setPullRefreshEnable(true);// 支持上拉刷新数据
        lv.setXListViewListener(this);// 支持触发各种事件
        // 设配器
        adapter = new ArrayAdapter<String>(this, R.layout.list_item, li);
        lv.setAdapter(adapter);
        // 用于动用线程时间
        hand = new Handler();
    }

    /**
     * 初始化数据 及后续下拉加载的数据 入集合
     */
    private void getdata() {
        // TODO Auto-generated method stub
        for (int i = 0; i < num; i++) {
            li.add("hellow Fanaw!" + i);
        }
    }

    // 刷新
    @Override
    public void onRefresh() {
        // 启动线程
        hand.postDelayed(new Runnable() {

            @Override
            public void run() {
                // 可做刷新处理

            }

        }, 2000);
        lv.stopRefresh();// 停止刷新
        Toast.makeText(this, "刷新完成了", 0).show();
    }

    // 加载
    @Override
    public void onLoadMore() {
        // 启动线程
        hand.postDelayed(new Runnable() {

            @Override
            public void run() {
                // 做一些加载的操作
                num += 10;
                getdata();
                adapter.notifyDataSetChanged();
            }

        }, 2000);

        lv.stopLoadMore();// 停止加载

        Toast.makeText(this, "li.lenth==" + li.size(), 0).show();
    }

}





猜你喜欢

转载自blog.csdn.net/fanaw/article/details/51697292
今日推荐