listView实现分页加载

实现简单的listview分页加载,效果如下图所示:
这里写图片描述
ListView显示预加载的10个Item,往上拉动每次加载2个Item;
自定义类LoadListView继承ListView,实现OnScrollListener接口,重写它的两个方法,在类里面定义一个加载更多数据的回调接口;

public class LoadListView extends ListView implements OnScrollListener
{
   
    View footer;         //底部布局;
    int lastVisibleItem; //最后一个可见的item;
    int totalItemCount;  //总的数量;
    boolean isLoading;   //正在加载;
    ILoadListener iLoadListener;

    public LoadListView(Context context) 
    {
        super(context);
        initShow(context);
    }

    public LoadListView(Context context, AttributeSet attrs) 
    {
        super(context, attrs);
        initShow(context);
    }

    //加载底部布局;
    private void initShow(Context context)
    {
        LayoutInflater inflater = LayoutInflater.from(context);
        footer = inflater.inflate(R.layout.footer_layout, null);
        footer.findViewById(R.id.layout).setVisibility(View.GONE);
        this.addFooterView(footer);
        this.setOnScrollListener(this);
    }

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) 
    {
        if(totalItemCount == lastVisibleItem && scrollState == SCROLL_STATE_IDLE) //滚动状态;
        {
            if(!isLoading)
            {
                isLoading = true;                        
                footer.findViewById(R.id.layout).
                   setVisibility(View.VISIBLE);
                iLoadListener.onload();  //加载更多数据;
            }           
        }
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem,
            int visibleItemCount, int totalItemCount) 
    {
        this.lastVisibleItem = firstVisibleItem + visibleItemCount;
        this.totalItemCount = totalItemCount;
    }

    public void setLoadListener(ILoadListener iLoadListener)
    {
        this.iLoadListener = iLoadListener;
    }

    //加载完成;
    public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值