欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Android培训Android LRecyclerView 操作案例分享实现下拉刷新滑动到底部自动加载.docx

    • 资源ID:12929742       资源大小:18.05KB        全文页数:10页
    • 资源格式: DOCX        下载积分:6金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要6金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Android培训Android LRecyclerView 操作案例分享实现下拉刷新滑动到底部自动加载.docx

    1、Android培训Android LRecyclerView 操作案例分享实现下拉刷新滑动到底部自动加载【Android培训】Android LRecyclerView 操作案例分享-实现下拉刷新、滑动到底部自动加载一直想抽空写下这个开源项目,但是各种原因没有抽时间,今天还是趁着工作间隙写下了这篇文库,与大家分享。简介LRecyclerView是支持addHeaderView、 addFooterView、下拉刷新、分页加载数据的RecyclerView。它对 RecyclerView 控件进行了拓展,给RecyclerView增加HeaderView、FooterView,并且不需要对你的A

    2、dapter做任何修改。主要功能下拉刷新、滑动到底部自动加载下页数据;可以方便添加Header和Footer;头部下拉样式可以自定义;具备item点击和长按事件。网络错误加载失败点击Footer重新请求数据;可以动态为FooterView赋予不同状态(加载中、加载失败、滑到最底等)。感谢如果我比别人看得远些,那是因为我站在巨人们的肩上。 (牛顿)本开源控件是基于 HeaderAndFooterRecyclerView 开源项目而来,在原基础上进行了扩充。GradleStep 1. 在你的根build.gradle文件中增加JitPack仓库依赖。allprojects repositories

    3、 jcenter() maven url https:/jitpack.io Step 2. 在你的model的build.gradle文件中增加LRecyclerView依赖。compile com.github.jdsjlzx:LRecyclerView:1.0.0使用添加HeaderView、FooterViewmDataAdapter = new DataAdapter(this); mDataAdapter.setData(dataList); mHeaderAndFooterRecyclerViewAdapter = new HeaderAndFooterRecyclerViewA

    4、dapter(this, mDataAdapter); mRecyclerView.setAdapter(mHeaderAndFooterRecyclerViewAdapter); mRecyclerView.setLayoutManager(new LinearLayoutManager(this); /add a HeaderView RecyclerViewUtils.setHeaderView(mRecyclerView, new SampleHeader(this); /add a FooterView RecyclerViewUtils.setFooterView(mRecycle

    5、rView, new SampleFooter(this);注意:mHeaderAndFooterRecyclerViewAdapter = new HeaderAndFooterRecyclerViewAdapter(this, mDataAdapter);HeaderAndFooterRecyclerViewAdapter提供了一些实用的功能,使用者不用关心它的实现,只需构造的时候把自己的mDataAdapter以参数形式传进去即可。下拉刷新和加载更多为了大家使用方便,将需要用的方法统一封装到接口LScrollListener中。mRecyclerView.setLScrollListen

    6、er(new LRecyclerView.LScrollListener() Override public void onRefresh() Override public void onScrollUp() Override public void onScrollDown() Override public void onBottom() Override public void onScrolled(int distanceX, int distanceY) );LScrollListener实现了nRefresh()、onScrollUp()、onScrollDown()、onBot

    7、tom()、onScrolled五个事件,如下所示:void onRefresh();/pull down to refreshvoid onScrollUp();/scroll down to upvoid onScrollDown();/scroll from up to downvoid onBottom();/load next pagevoid onScrolled(int distanceX, int distanceY);/ moving state,you can get the move distanceonRefresh()RecyclerView下拉刷新事件;onScro

    8、llUp()RecyclerView向上滑动的监听事件;onScrollDown()RecyclerView向下滑动的监听事件;onBottom()RecyclerView滑动到底部的监听事件;onScrollDown()RecyclerView正在滚动的监听事件;加载更多(加载下页数据)从上面的LScrollListener介绍中就可以看出,实现加载更多只要在onBottom()接口中处理即可。下拉刷新为了达到和Listview的下拉刷新效果,本项目没有借助SwipeRefreshLayout控件,而是在自定义RecyclerView头部实现的刷新效果。这里的下拉刷新效果借鉴了开源库:AVL

    9、oadingIndicatorViewmRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);mRecyclerView.setArrowImageView(R.drawable.iconfont_downgrey);AVLoadingIndicatorView库有多少效果,LRecyclerView就支持多少下拉刷新效果,当然你也可以自定义下拉效果。下拉刷新逻辑处理:从上面的LScrollListener介绍中就可以看出,实现下拉刷新只要在onRefresh()接口中处理即可。加载网络异常处理加载数据时如

    10、果网络异常或者断网,LRecyclerView为你提供了重新加载的机制。网络异常出错代码处理如下:RecyclerViewStateUtils.setFooterViewState(getActivity(), mRecyclerView, getPageSize(), LoadingFooter.State.NetWorkError, mFooterClick);private View.OnClickListener mFooterClick = new View.OnClickListener() Override public void onClick(View v) Recycler

    11、ViewStateUtils.setFooterViewState(getActivity(), mRecyclerView, getPageSize(), LoadingFooter.State.Loading, null); requestData(); ;上面的mFooterClick就是我们点击底部的Footer时的逻辑处理事件,很显然我们还是在这里做重新请求数据操作。点击事件和长按事件处理在Hongyang前辈的博客中有下描述:Click and LongClick不过一个挺郁闷的地方就是,系统没有提供ClickListener和LongClickListener。不过我们也可以自己

    12、去添加,只是会多了些代码而已。实现的方式比较多,你可以通过mRecyclerView.addOnItemTouchListener去监听然后去判断手势, 当然你也可以通过adapter中自己去提供回调,这里我们选择后者,前者的方式,大家有兴趣自己去实现。Hongyang大神选择了后者,LRecyclerView早期选择了前者,经过实践总结,在adapter中实现点击事件会好点。先看下怎么使用:mHeaderAndFooterRecyclerViewAdapter.setOnItemClickLitener(new OnItemClickLitener() Override public voi

    13、d onItemClick(View view, int position) Override public void onItemLongClick(View view, int position) );原理就是实现viewHolder.itemView的点击和长按事件。由于代码过多就不贴出来了。viewHolder.itemView是RecyclerView.Adapter中本身就具有的,不用额外定义。源码如下:public static abstract class ViewHolder public final View itemView; int mPosition = NO_POS

    14、ITION; int mOldPosition = NO_POSITION; long mItemId = NO_ID; int mItemViewType = INVALID_TYPE; int mPreLayoutPosition = NO_POSITION;设置空白View(setEmptyView)mRecyclerView.setEmptyView(view);注意布局文件: 分享介绍完了LRecyclerView,似乎还少些什么,对了,那就是adapter了。为了方便大家使用,分享个封装过的adapter。public class ListBaseAdapter extends R

    15、ecyclerView.Adapter protected Context mContext; protected int mScreenWidth; public void setScreenWidth(int width) mScreenWidth = width; protected ArrayList mDataList = new ArrayList(); Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) return null; Override pu

    16、blic void onBindViewHolder(RecyclerView.ViewHolder holder, int position) Override public int getItemCount() return mDataList.size(); public List getDataList() return mDataList; public void setDataList(Collection list) this.mDataList.clear(); this.mDataList.addAll(list); notifyDataSetChanged(); publi

    17、c void addAll(Collection list) int lastIndex = this.mDataList.size(); if (this.mDataList.addAll(list) notifyItemRangeInserted(lastIndex, list.size(); public void clear() mDataList.clear(); notifyDataSetChanged(); ListBaseAdapter使用了泛型,简单方便,消除了强制类型转换。使用如下:private class DataAdapter extends ListBaseAdap

    18、ter private LayoutInflater mLayoutInflater; public DataAdapter(Context context) mLayoutInflater = LayoutInflater.from(context); mContext = context; Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) return new ViewHolder(mLayoutInflater.inflate(R.layout.sample

    19、_item_text, parent, false); Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) ItemModel item = mDataList.get(position); ViewHolder viewHolder = (ViewHolder) holder; viewHolder.textView.setText(item.title); private class ViewHolder extends RecyclerView.ViewHolder private TextView textView; public ViewHolder(View itemView) super(itemView); textView = (TextView) itemView.findViewById(R.id.info_text); ListBaseAdapter虽然功能不强大,但是使用很方便。结语LRecyclerView使用方便简单,无论你添加多少Header和Footer,你都不用担心position的问题,除了方便还是方便。大家用起来吧!


    注意事项

    本文(Android培训Android LRecyclerView 操作案例分享实现下拉刷新滑动到底部自动加载.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开