让swiperefreshlayout 加载更多。

package view;

import android.content.Context;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AbsListView;
import android.widget.ListView;
import android.widget.ViewFlipper;

import com.example.luokx.loadmore_2016_03_15_12_02.R;

import interfaces.LoadController;

/**
 * 描述说明  <br/>
 * Author : luokaixuan <br/>
 * CreateDate : 16-3-15 下午5:18<br/>
 * Modified : luokaixuan <br/>
 * ModifiedDate : 16-3-15 下午5:18<br/>
 * Email : 1005949566@qq.com <br/>
 * Version 1.0
 */
public class SwipeRefreshLoadMoreLayout2 extends SwipeRefreshLayout implements
        AbsListView.OnScrollListener, LoadController {

    View mListViewFooter;

    ViewFlipper vfFooter;

    /**
     * listview实例
     */
    private ListView mListView;

    LoadMore loadMore;

    public boolean isNoMore = false;

    /** 记录第一行Item的数值 */
    private int firstVisibleItem;

    public SwipeRefreshLoadMoreLayout2(Context context) {
        super(context);
        initView(context);
    }

    public SwipeRefreshLoadMoreLayout2(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView(context);
    }

    public void initView (Context context) {

        mListViewFooter = LayoutInflater.from(context).inflate(R.layout.foot_item, null,
                false);

        //正在加载,加载成功,加载失败,没有网络,没有更多。

        vfFooter = (ViewFlipper) mListViewFooter.findViewById(R.id.vf_footer_container);

        vfFooter.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                loadMore();
            }
        });

    }

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);

        getListView();

        if (mListView != null && mListView.getFooterViewsCount() < 1) {
            Log.e(" dedao ", mListView + " dedao " + mListViewFooter);

            mListView.addFooterView(mListViewFooter);
//            mListView.setFooterDividersEnabled(false);
        }
    }

    /**
     * 获取ListView对象
     */
    private void getListView() {
        int childs = getChildCount();
        if (childs > 0) {
            View childView = getChildAt(0);
            if (childView instanceof ListView) {
                mListView = (ListView) childView;
                // 设置滚动监听器给ListView, 使得滚动的情况下也可以自动加载
                mListView.setOnScrollListener(this);
//                Log.d(VIEW_LOG_TAG, "### 找到listview");
            }
        }
    }

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {

        //当滑动到底部时
        if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE
//                && firstVisibleItem != 0) {
        && mListView.getLastVisiblePosition() + 1 == mListView.getCount()) {
            loadMore();
            Log.e(" load more ", " loadmore ");
        }
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

        this.firstVisibleItem = firstVisibleItem;

        if (mListViewFooter != null) {
            //判断可视Item是否能在当前页面完全显示
//            if (visibleItemCount == totalItemCount) {
//                // removeFooterView(footerView);
//                mListViewFooter.setVisibility(View.GONE);//隐藏底部布局
//                if (!isNoMore && mListView.getCount() > 0) {
//                }
//            } else {
//                // addFooterView(footerView);
//                mListViewFooter.setVisibility(View.VISIBLE);//显示底部布局
//            }
        }

    }

    public void setLoadMoreListener(LoadMore loadMore) {
        this.loadMore = loadMore;
    }

    public void loadMore () {
        if (! isNoMore) {
            loadMore.loadMore();
        }
    }

    @Override
    public void loading() {

        vfFooter.setDisplayedChild(0);
    }

    @Override
    public void loadSuccess() {

        vfFooter.setDisplayedChild(1);
        SwipeRefreshLoadMoreLayout2.this.setRefreshing(false);
    }

    @Override
    public void loadFailure() {

        vfFooter.setDisplayedChild(2);
        SwipeRefreshLoadMoreLayout2.this.setRefreshing(false);
    }

    @Override
    public void loadNoNetWork() {

        vfFooter.setDisplayedChild(3);
        SwipeRefreshLoadMoreLayout2.this.setRefreshing(false);
    }

    @Override
    public void loadNoMore() {

        vfFooter.setDisplayedChild(4);
        SwipeRefreshLoadMoreLayout2.this.setRefreshing(false);
        isNoMore = true;
    }

    @Override
    public void loadServerError() {

        vfFooter.setDisplayedChild(5);
        SwipeRefreshLoadMoreLayout2.this.setRefreshing(false);
    }

    @Override
    public void loadUnauthenticated() {
        vfFooter.setDisplayedChild(6);
        SwipeRefreshLoadMoreLayout2.this.setRefreshing(false);
    }


    /**
     * 上拉刷新的ListView的回调监听
     *
     * @author xiejinxiong
     *
     */
    public interface LoadMore {

        void loadMore();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值