Android 更新RecyclerView的好方法
一般在使用RecyclerView的时候不免要修改RecyclerView的数据,使用notifyDataSetChanged()来刷新界面,但是当数据比较多,而只是修改了一点的数据,或者刷新比较频繁,这样就会导致界面的卡顿问题,用户交互特别不好。
这个时候就需要只是修改需要修改的数据,不要将数据全部进行更新,这样就可以解决问题。
局部更新的代码如下:
private int position;//当前recyclerview的position @BindView(R.id.speak_valuate_recycler_view) RecyclerView recyclerView; private LinearLayoutManager mRecyclerViewLayoutManager; mRecyclerViewLayoutManager = new LinearLayoutManager(this); mRecyclerViewLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); recyclerView.setLayoutManager(mRecyclerViewLayoutManager); private void changVolume(final int volume) { int first = mRecyclerViewLayoutManager.findFirstVisibleItemPosition(); int last = mRecyclerViewLayoutManager.findLastVisibleItemPosition(); if (position >= first && position <= last) { View view = recyclerView.getChildAt(position - first); if (recyclerView.getChildViewHolder(view) instanceof SpeakContentAdapter.SpeakContentHolder) { //修改数据 ProgressImageView progressImageView = (ProgressImageView) view.findViewById(R.id.speak_item_record); progressImageView.setProgress(volume); } } }
以上所述是小编给大家介绍的Android 更新RecyclerView的好方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
Android使用分类型RecyclerView仿各大商城首页
**正所谓,一入商城深似海~ 商城类的App,确实是有许多东西值得学习,但是只要略微斟酌一下,你又会发现,它们之间存在着许多不谋而合的相似,也就是所谓的雷同~既然如此,让我们也来接下地气,先从一个简单的首页做起吧~** 实现的效果如下图: 1.大布局就是一个简单的RecyclerView: 也可以通过添加多个header实现 4.这里我仅以四种类型为例 /** * 4种类型 */ /** * 类型1:黑色星期五--使用banner实现 */ public static final int BLA
-
android中RecyclerView自定义分割线实现
最近一直在看RecyclerView,较之ListView它确实是灵活多变,给予开发者更多自定义的空间,比如:需要添加头部和尾部.item的点击事件.自定义的LayoutManager,还有就是下面要说的自定义的分割线. 1.如何理解分割线 经常听到有人说自定义分割线麻烦,为什么不把分割线写到item布局里,这样不是更简单吗?有些情况把分割线写到item布局里是很难达到我们想要的效果,例如RecyclerView里的GridLayoutManager,StaggeredGridLayoutMan
-
Android RecyclerView实现下拉刷新和上拉加载更多
使用官方的刷新控件SwipeRefreshLayout来实现下拉刷新,当RecyclerView滑到底部实现下拉加载(进度条效果用RecyclerView加载一个布局实现) 需要完成控件的下拉监听和上拉监听,其中,下拉监听通过SwipRefreshLayout的setOnRefreshListener()方法监听,而上拉刷新,需要通过监听列表的滚动,当列表滚动到底部时触发事件,具体代码如下 主布局 <?xml version="1.0" encoding="utf-8&
-
Android中RecyclerView实现分页滚动的方法详解
一.需求分析 最近公司项目要实现一个需求要满足以下功能: 1)显示一个 list 列表, item 数量不固定. 2)实现翻页功能,一次翻一页. 3)实现翻至某一页功能. 下面介绍通过 RecyclerView 实现该需求的实现过程(效果图如下). 二.功能实现 2.1 OnTouchListener 记录当前开始滑动位置 要实现翻页滑动首先我们要确定是向前翻页还是向后翻页,这里通过记录开始翻页前当前的位置和滑动后的位置比较即可得知,下面选择手指触摸按下时滑动的位置为当前开始滑动位置: //当前
-
Android利用RecyclerView实现全选、置顶和拖拽功能示例
前言 今天给大家分享是如何在RecyclerView实现全选,ItemTouchHelper实现侧滑删除,拖拽功能.比较基础.关于RecyclerView的强大,就不多说了.在Android L SDK发布的新API中最有意思的就是RecyclerView 和 CardView了, 按照官方的说法, RecyclerView 一个ListView 的一个更高级更灵活的一个版本, 可以自定义的东西太多了. 效果: RecyclerView实现全选,ItemTouchHelper实现侧滑删除,拖拽功
-
Android RecyclerView的卡顿问题的解决方法
RecyclerView为什么会卡 RecyclerView作为v7包的新控件,自从推出就广受Android Developer们欢迎,实际上它已经取代了ListView和GridView两位老前辈的地位.然而不少亲们想必也已经发现了:没有优化过的Recycler性能很poor.上一篇博主使用的item也仅仅是一个图两串字而已,结果一滑动就卡的要命,不能忍! 那么why?回想在用ListView和GridView的adapter时,我们是用一种叫ViewHolder的自定义类(容器)来实现优化的
-
Android 更新RecyclerView的好方法
一般在使用RecyclerView的时候不免要修改RecyclerView的数据,使用notifyDataSetChanged()来刷新界面,但是当数据比较多,而只是修改了一点的数据,或者刷新比较频繁,这样就会导致界面的卡顿问题,用户交互特别不好. 这个时候就需要只是修改需要修改的数据,不要将数据全部进行更新,这样就可以解决问题. 局部更新的代码如下: private int position;//当前recyclerview的position @BindView(R.id.speak_valu
-
Android获取RecyclerView滑动距离方法详细讲解
先说能用的究极解决方案,大家着急的直接复制走,以后想了解再过来看 没有header,且所有Item的高度一致 private fun getScrollYDistance(recyclerView: RecyclerView): Int? { kotlin.runCatching { val layoutManager = recyclerView.layoutManager as LinearLayoutManager val position = layoutManager.findFirs
-
Android实现SQLite添加、更新及删除行的方法
本文实例讲述了Android实现SQLite添加.更新及删除行的方法.分享给大家供大家参考,具体如下: SQLiteDatabase类暴露了特定的方法,如insert.delete和update等方法,这些方法包装了执行这些动作所需的SQL语句.尽管如此,execSQL方法允许你在数据库表上执行任何有效的SQL语句,而这些动作就是你想要手动执行的. 在任何时候,如果你修改了底层数据库的值,你都应该调用任一在当前表上浏览的Cursor的refreshQuery方法. 插入新行 为了创建一个新行,构
-
详解Android中OkHttp3的例子和在子线程更新UI线程的方法
okHttp用于android的http请求.据说很厉害,我们来一起尝尝鲜.但是使用okHttp也会有一些小坑,后面会讲到如何掉进坑里并爬出来. 首先需要了解一点,这里说的UI线程和主线程是一回事儿.就是唯一可以更新UI的线程.这个只是点会在给okHttp填坑的时候用到.而且,这个内容本身在日常的开发中也经常用到,值得好好学一学. okHttp发起同步请求 第一个列子是一个同步请求的例子. private void performSyncHttpRequest() { OkHttpClient
-
Android 更新UI的方法汇总
1.Activity的 runOnUiThread textView = (TextView) findViewById( R.id.tv ); new Thread(new Runnable() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { textView.setText( "更新UI了"); } }); } }).start(); andro
-
Android中RecyclerView拖拽、侧删功能的实现代码
废话不多说,下面展示一下效果. 这是GridView主文件实现. public class GridViewActivity extends AppCompatActivity { RecyclerView mRecyclerView; List<String> mStringList; RecyclerAdapter mRecyAdapter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { s
-
浅谈Android为RecyclerView增加监听以及数据混乱的小坑
为 RecyclerView增加监听 1.在实现好的MyAdapter中写内部接口: public void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener) { this.onItemLongClickListener = onItemLongClickListener; } public void setOnItemClickListener(OnItemClickListener onIt
-
Android利用RecyclerView实现列表倒计时效果
最近面试时,面试官问了一个列表倒计时效果如何实现,现在记录一下. 运行效果图 实现思路 实现方法主要有两个: 1.为每个开始倒计时的item启动一个定时器,再做更新item处理: 2.只启动一个定时器,然后遍历数据,再做再做更新item处理. 经过思考,包括性能.实现等方面,决定使用第2种方式实现. 实现过程 数据实体 /** * 总共的倒计时的时间(结束时间-开始时间),单位:毫秒 * 例: 2019-02-23 11:00:30 与 2019-02-23 11:00:00 之间的相差的毫秒数
-
Android实现RecyclerView下拉刷新效果
本文为大家分享了Android实现RecyclerView下拉刷新效果的具体代码,供大家参考,具体内容如下 思路 RealPullRefreshView继承了一个LinearLayout 里面放置了一个刷新头布局,将其margin_top设置为负的刷新头的高度的 再添加一个RecyclerView 触摸事件分发机制,当在特定条件下让RealPullRefreshView拦截触摸事件,否则的话,不拦截,让RecyclerView自己去处理触摸事件 在手指下拉时,定义好不同的状态STATE,在不同状
随机推荐
- ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
- python中requests爬去网页内容出现乱码问题解决方法介绍
- 学习ExtJS form布局
- 原生js 封装get ,post, delete 请求的实例
- 附件名前加网站名
- Mac Android Studio 3.0 Terminal 中文乱码问题处理
- linux下多个mysql5.7.19(tar.gz)安装图文教程
- JQuery的Ajax跨域请求原理概述及实例
- java中判断字段真实长度的实例(中文2个字符,英文1个字符)
- jquery取消事件冒泡的三种方法(推荐)
- javascript弹出带文字信息的提示框效果
- firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
- 整理Java的MyBatis框架中一些重要的功能及基本使用示例
- 修改注册表 把“我的电脑”捧上去
- Mac上搭建nginx+rtmp直播服务器的步骤详解
- linux下的dhcp服务的完全配置(图文详解)
- C#配置文件操作类分享
- Java位运算和逻辑运算的区别实例
- c#代码自动修改解决方案下任意文件实例
- java通过jacob实现office在线预览功能