安卓中Xlistview的上拉加载和下拉刷新

我们安卓中要实现listview的上拉加载和下拉刷新,使用的是一个名为Xlistview的控件,已经有写好的包 我们直接导入自己的工程就好

这个是主mainactivity里面的代码,主要是初始化xlistview的控件,给xlistview控件设置监听,实现其接口中的两个方法,加载和刷新方法,一般就是我们所写的在网络请求数据的方法

package com.example.xlistviewtest;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import org.com.cctest.view.XListView;
import org.com.cctest.view.XListView.IXListViewListener;

import android.app.Activity;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.widget.ArrayAdapter;

public class MainActivity extends Activity {
   

    private List<String> list;
    int j;
    private ArrayAdapter<String> arrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setData();

        final XListView xListView = (XListView) findViewById(R.id.xListView);
        // 激活加载更多
        xListView.setPullLoadEnable(true);
        // 激活下拉刷新
        xListView.setPullRefreshEnable(true);
        // 设置xlistView上拉加载下拉刷新的监听
        xListView.setXListViewListener(new IXListViewListener() {

            @Override
            // 下拉刷新的回调方法
            public void onRefresh() {
                // 下拉刷新,应该展示最新数据,所以清空集合
                list.clear();
                for (int i = 0; i < 5; i++) {

                    list.add("下拉刷新" + (j += 1));
                }

                arrayAdapter.notifyDataSetChanged();
                //设置刷新时间
                xListView.setRefreshTime(dateFormat());
                //停止加载更多
                xListView.stopLoadMore();
                //停止刷新
                xListView.stopRefresh();
            }

            @Override
            // //上拉加载的回调方法
            public void onLoadMore() {

                for (int i = 0; i < 5; i++) {

                    list.add("上拉加载" + (j += 1));
                }
                arrayAdapter.notifyDataSetChanged();
                //停止加载更多
                xListView.stopLoadMore();
                //停止刷新
                xListView.stopRefresh();
            }
        });

        arrayAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, list);

        xListView.setAdapter(arrayAdapter);

    }

    /**
     * 格式化毫秒值
     * 
     * @return
     */
    private String dateFormat() {
        long currentTimeMillis = System.currentTimeMillis();

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd  hh:mm:ss");

        String format = dateFormat.format(currentTimeMillis);

        return format;
    }

    private void setData() {
        list = new ArrayList<>();
        list.add("aaaaa");
        list.add("bbbbb");
        list.add("cccc");
        list.add("ddddd");
        list.add("eeee");
        list.add("fffff");
        list.add("gggg");
        list.add("hhhhh");
        list.add("iiiii");
    }
}

下面两个是listview的头部和足部  每个listview都有这两个类  里面主要是重新的一些方法  我们直接类.方法名就可以操作  大家可以看一下里面的方法

/**
* @file XListView.java
* @package me.maxwin.view
* @create Mar 18, 2012 6:28:41 PM
* @author Maxwin
* @description An ListView support (a) Pull down to refresh, (b) Pull up to load more.
* Implement IXListViewListener, and see stopRefresh() / stopLoadMore().
*/
package org.com.cctest.view;

import com.example.xlistviewtest.R;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.view.animation.DecelerateInterpolator;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Scroller;
import android.widget.TextView;

public class XListView extends ListView implements OnScrollListener {

private float mLastY = -1; // save event y
private Scroller mScroller; // used for scroll back
private OnScrollListener mScrollListener; // user's scroll listener

// the interface to trigger refresh and load more.
private IXListViewListener mListViewListener;

// -- header view
private XListViewHeader mHeaderView;
// header view content, use it to calculate the Header's height. And hide it
// when disable pull refresh.
private RelativeLayout mHeaderViewContent;
private TextView mHeaderTimeView;
private int mHeaderViewHeight; // header view's height
private boolean mEnablePullRefresh = true;
private boolean mPullRefreshing = false; // is refreashing.

// -- footer view
private XListViewFooter mFooterView;
private boolean mEnablePullLoad;
private boolean mPullLoading;
private boolean mIsFooterReady = false;

// total list items, used to detect is at the bottom of listview.
private int mTotalItemCount;

// for mScroller, scroll back from header or footer.
private int mScrollBack;
private final static int SCROLLBACK_HEADER = 0;
private final static int SCROLLBACK_FOOTER = 1;

private final static int SCROLL_DURATION = 400; // scroll back duration
private final static int PULL_LOAD_MORE_DELTA = 50; // when pull up >= 50px
                                                    // at bottom, trigger
                                                    // load more.
private final static float OFFSET_RADIO = 1.8f; // support iOS like pull
                                                // feature.

/**
 * @param context
 */
public XListView(Context context) {
    super(context);
    initWithContext(context);
}

public XListView(Context context, AttributeSet attrs) {
    super(context, attrs);
    initWithContext(context);
}

public XListView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    initWithContext(context);
}

private void initWithContext(Context context) {
    mScroller = new Scroller(context, new DecelerateInterpolator());
    // XListView need the scroll event, and it will dispatch the event to
    // user's listener (as a proxy).
    super.setOnScrollListener(this);

    // init header view
    mHeaderView = new XListViewHeader(context);
    mHeaderViewContent = (RelativeLayout) mHeaderView
            .findViewById(R.id.xlistview_header_content);
    mHeaderTimeView = (TextView) mHeaderView
            .findViewById(R
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值