可以侧滑的下拉刷新

[复制链接]
来自: MrlLee 分类: Android精品源码 上传时间: 2016-10-10 10:31:48
Tag:Failed commit latest null 报名

项目介绍:

CBPullRefreshListView



下拉刷新很常见,listview带侧滑功能的也很常见。github上将两者结合的也很多比如:SwipeMenuListView是带有侧滑功能的lisetview但是无法下拉刷新。而Android-PullToRefresh-SwipeMenuListView-Sample是将几个功能完整结合。看了下他们的实现,是在以前的XListView基础上整合。但listview里面的下拉刷新和上拉加载的动作与刷新头耦合比较严重。如果想自定义自己的刷新头样式稍微麻烦点。于是就想把下拉刷新的功能和刷新头的展示样式抽离分开。listview只管将一些下拉上拉的事件传递出来。刷新头通过实现这些状态方法去做自己想要的刷新样式就可以了。





自定义刷新头



继承CBRefreshHeaderView 实现几个状态下的回调的方法比如:



[Java] 查看源文件 复制代码
/**
 * 设置当前状态
 * @param state
 */
@Override
public void setState(int state) {

}
/**
 * 下拉刷新的回调
 */
@Override
public void pullToRefresh() {

}
/**
 * 释放刷新的回调
 */
@Override
public void releaseToRefresh() {

}
/**
 * 正在刷新
 */
@Override
public void onRefreshing() {

}
/**
 * 设置头部或底部的可见高度
 * @param height
 */
@Override
public void setVisiableHeight(int height) {

}
/**
 * 获取可见高度
 * @return
 */
@Override
public int getVisiableHeight() {
    return 0;
}
/**
 * 正在拖动
 * @param deltaY
 */
@Override
public void onDragSlide(float deltaY) {

}


在这些方法中去改变刷新头不同状态下的表现形式。(下拉刷新是通过改变头部高度实现的)可以参考CBRefreshHeader MyCustomRrefreshHeader 有哪些状态回调可以查看 CBRefreshState



CBPullRefreshListView一些其他方法:



设置自定义的刷新头



[Java] 查看源文件 复制代码
mListView.setRefreshHeader(myRefreshHeader);


设置是否显示顶部的搜索栏(可自定义)



[Java] 查看源文件 复制代码
mListView.showTobSearchBar(true);
mListView.setTopSearchBar(myTopSearchBar);


设置swipe开关



[Java] 查看源文件 复制代码
mListView.setSwipeEnable(false)


设置下拉刷新的监听接口



[Java] 查看源文件 复制代码
mListView.setOnPullRefreshListener(new CBPullRefreshListView.OnPullRefreshListener() {
        @Override
        public void onRefresh() {
            mListView.postDelayed(new Runnable() {
                @Override
                public void run() {
                    mListView.stopRefresh();
                }
            }, 3000);
        }

        @Override
        public void onLoadMore() {
            mListView.postDelayed(new Runnable() {
                @Override
                public void run() {
                    mListView.stopLoadMore();
                }
            }, 3000);
        }

        @Override
        public void onUpdateRefreshTime(long time) {

        }

    });


设置侧滑菜单项目



[Java] 查看源文件 复制代码
SwipeMenuCreator creator = new SwipeMenuCreator() {

        @Override
        public void create(SwipeMenu menu) {

            SwipeMenuItem collectionItem = new SwipeMenuItem(getApplicationContext());
            collectionItem.setBackground(R.color.green);
            collectionItem.setWidth(dp2px(CustomRefreshHeaderActivity.this, 90));
            collectionItem.setTitle(\"收藏\");
            collectionItem.setTitleSize(18);
            collectionItem.setTitleColor(Color.WHITE);
            collectionItem.setIcon(R.drawable.icon_collection);
            menu.addMenuItem(collectionItem);

            SwipeMenuItem deleteItem = new SwipeMenuItem(getApplicationContext());
            deleteItem.setBackground(R.color.red);
            deleteItem.setWidth(dp2px(CustomRefreshHeaderActivity.this, 90));
            deleteItem.setTitle(\"删除\");
            deleteItem.setIcon(R.drawable.icon_delete);
            deleteItem.setTitleSize(18);
            deleteItem.setTitleColor(Color.WHITE);
            menu.addMenuItem(deleteItem);
        }
    };
    mListView.setMenuCreator(creator);


设置侧滑菜单项的点击添加和listview的item点击监听



[Java] 查看源文件 复制代码
mListView.setOnMenuItemClickListener(new CBPullRefreshListView.OnMenuItemClickListener() {
        @Override
        public void onMenuItemClick(int position, SwipeMenu menu, int index) {
            Toast.makeText(CustomRefreshHeaderActivity.this, \"点击了item swipe 菜单的第\" + index, Toast.LENGTH_SHORT).show();
        }
    });
mListView.setOnItemClickListener(new CBPullRefreshListView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView parent, View view, int position, long id) {
            Toast.makeText(CustomRefreshHeaderActivity.this,\"点击了\"+position,Toast.LENGTH_SHORT).show();
        }
    });

相关源码推荐:

我来说两句
所有评论(29)
snowqoo228 2016-10-10 10:33:49
膜拜大神~
回复
humanboy 2016-10-10 10:40:39
支持,感谢,祝巴士越来越好~
回复
葫芦_eRDJw 2016-10-10 10:44:51
膜拜大神~
回复
allow.xuweibin 2016-10-10 10:47:01
支持,感谢,祝巴士越来越好~
回复
孙林 2016-10-10 10:47:50
强烈支持楼主ing……
回复
fancy 2016-10-10 11:16:21
感谢分享,楼主V5~
回复
manmanyun 2016-10-10 11:45:31
支持,感谢,祝巴士越来越好~
回复
1234下一页
提取码:  下载次数:28 状态:已购或VIP 售价:10(原价:10)金钱 下载权限:初级码农 
1814 0 28
代码贡献英雄榜
用户名 下载数
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,769657487

如何获得代码达人称号

如何成为签约作者

领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )