android开发游记:listview下拉刷新和上拉加载的实现

ListView是在app中使用最多的组件,下拉刷新和上拉加载更多已经成了列表页的标准了,然而google并没有提供这样的功能,只能自定义或者使用第三方开源组件。这里介绍一下XlistView,在源生ListView上进行修改增加上拉和下拉功能的开源组件。

效果图如下:

这里写图片描述

下载地址:
XListView-Android下载地址

使用方法:

下载库文件,引入工程并关联自己项目。

在自己项目的布局文件中把ListView修改为me.maxwin.view.XListView,如:

<ListView
       android:layout_width="match_parent"
       android:layout_height="match_parent"/>

改为:

<me.maxwin.view.XListView
       android:layout_width="match_parent"
       android:layout_height="match_parent"/>

在代码中,设置是否需要下拉刷新和上拉加载功能:

    XListView listV = (XListView)findViewById(R.id.list_msg);
    listV.setPullRefreshEnable(true);   //默认为true
    listV.setPullLoadEnable(true);

这样就可以运行看看效果了。

接着捕获下拉和上拉事件做相应处理:

    listV.setXListViewListener(new IXListViewListener() {
            @Override
            public void onRefresh() {
                // TODO Auto-generated method stub
            }

            @Override
            public void onLoadMore() {
                // TODO Auto-generated method stub
            }
        });

在onRefresh()和onLoadMore()中实现页面刷新和加载更多就可以了,记得刷新完毕后,自行调用stopRefresh()和stopLoadMore(),否则进度条会一直旋转无法消失。

例如,模拟加载的效果:

@Override
    public void onRefresh() {
        mHandler.postDelayed(new Runnable(){
            @Override
            public void run(){
                adapter.getResults().clear();
                loadData(adapter.getResults());
                adapter.notifyDataSetChanged();
                listV.stopRefresh();
            }
        }, 1000);
    }

    @Override
    public void onLoadMore() {
        mHandler.postDelayed(new Runnable(){
            @Override
            public void run(){
                adapter.getResults().add(new TestPojo("item1"));
                adapter.getResults().add(new TestPojo("item2"));
                adapter.getResults().add(new TestPojo("item3"));
                adapter.notifyDataSetChanged();
                listV.stopLoadMore();
            }
        }, 1000);
    }

另外,补充一下XListView的布局高度,推荐设置为 match_parent

<me.maxwin.view.XListView
       android:layout_width="match_parent"
       android:layout_height="match_parent"/>

如果设置为自适应的话,会导致控件在上拉下拉的时候不断计算高度,最终导致拉动很卡,不知道这算不算一个bug,或者说一个待优化项吧,有兴趣的可以自己看看源码修改一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值