Android listview局部刷新
我们都知道adapter.notifyDataSetChanged()方法可以通知adapter进行界面刷新,此方法是将界面中的数据全部刷新一遍,虽然listview自身做了缓存,并且我们复用了convertView,但是当前界面的item布局还是会全部刷新,如果我们只是改变item的一个属性,比如点赞就要全部刷新数据,有点小题大做了。所以实现局部刷新是很有必要的。使用如下:
第一步。我们获取要刷新的item数据源和需要刷新item的索引:
listview.setOnItemClickListener(newAdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {//数据源内容同步更新Useruser(User)parent.getItemAtPosition(position);user.setName("iam change");//更新被点击控件内容,代替调用adapter.notifyDataSetChanged();方法updateName(user.getName, position);}});
第二步。单独刷新需要更新的view:
private void updateName(String name, int position) {int firstVisiblePosition = listview.getFirstVisiblePosition();int lastVisiblePosition = listview.getLastVisiblePosition();//在看见范围内才更新进度条if (position >= firstVisiblePosition && position <= lastVisiblePosition) {//获取指定位置view对象View view = listview.getChildAt(position - firstVisiblePosition);if (view.getTag() instanceof TestListViewAdapter.ViewHolder) {//获取指定view对应的ViewHolderTestListViewAdapter.ViewHolder viewHolder = (TestListViewAdapter.ViewHolder) view.getTag();viewHolder.name.setText(name);}}}
很简单的就实现了。
另一种方法 , 项目很老 , 没有采用viewholder
private void updateName(String num, int position) {int firstVisiblePosition = mListView.getFirstVisiblePosition();int lastVisiblePosition = mListView.getLastVisiblePosition();//在看见范围内才更新进度条if (position > firstVisiblePosition && position <= lastVisiblePosition) {//获取指定位置view对象View view = mListView.getChildAt(position - firstVisiblePosition);EditText editText = view.findViewById(R.id.edittext);editText.setText(num);}}
获取控件的方式不同
Android listview局部刷新相关推荐
- android ListView 局部刷新
今天,简单讲讲android如何对ListView 进行局部刷新. 之前,自己做的ListView 发现刷新频率太高了,而且很多界面上看不到的数据改变时调用Adapter.notifyDataSetC ...
- Android ListView局部刷新item
当前ListView页面跳转到其他页面返回后,重新获取数据后刷新局部item 1.首先需要获取到跳转之前item的位置,给ListView设置setOnScrollViewListener()接口,在 ...
- ListView 局部刷新
概述 在使用ListView的时候,我们都会对列表数据进行更新,当数据变化时,我们会调用adapter的notifyDataSetChange方法去刷新列表.但是,该刷新方法是使整个列表都更新一遍(调 ...
- android局部布局刷新,Android RecyclerView 局部刷新分析
前情回顾 之前写的 PowerAdapter 和 SelectPowerAdapter 从创建到现在,已经两年多,期间发生了翻天覆地的变化.一开始,我把 SwipeRefreshLayout 和 Re ...
- Flutter ListView 局部刷新数据、ListView点赞收藏
题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 [x2]各种系列的视频教程 ...
- android 点赞局部刷新,局部刷新ListView,实现点赞功能
今天看到一个需要实现一个点赞的功能.自己想没想明白,后来看了http://blog.csdn.net/nupt123456789/article/details/39432781 这篇博客,才有了思路 ...
- Android ListView列表 刷新和加载更多
上下拉实现刷新和加载更多的ListView,如下: package com.sin.android.ui;import android.content.Context; import android. ...
- Android listview图片刷新闪烁
很多时候listview里面有图片的时候 我们下拉加载更多或者刷新的时候 列表里面的图片会闪烁 这不是我们想要的效果,所以需要在adapter里面做一定的处理. 在adapter里面加载图片后 把这个 ...
- android listview多线程刷新各自的进度,从另一个线程更新主线程中的ListView
Yar.. 12 我个人使用自定义线程(扩展线程的类),但通过Message发送响应给UI线程.所以在线程的run()函数中有: Message msg; msg = Message.obtain() ...
- android:ListView的局部刷新
1.简介 对于android中的ListView刷新机制,大多数的程序员都是很熟悉的,修改或者添加adapter中的数据源之后,然后调用notifyDataSetChanged()刷新ListView ...
最新文章
- 同一个类 cannot be cast to_留学热门assignment之 税收筹划类essay
- 面向对象和结构化程序设计的区别X
- 每日一皮:程序员和黑客的区别
- (23)zabbix单位符号Unit symbols
- OpenVX, 运算加速库, NVIDIA
- python达梦数据库_Python 编程可以访问达梦数据吗?
- 一个简单的空气质量数据监测站项目
- 上学与不上学的区别_这是我在全球最大的React会议上学到的
- linux bash gt,linux之bash的基础特性(一)--gt;命令历史(history命令),命令补全,路径补全...
- SAST算法的学习笔记
- android 拼接参数,Android 多参数多文件同时上传
- python在线发音-Python如何实现文本转语音
- python struct 45s_python32版本,struct.error: argument for 's' must be a bytes object - 小众知识...
- SAS 9.4 破解时间限制
- 基于python下django框架 实现校园二手书籍交易系统详细设计
- 案例:如何评价代码走查的效果?
- 1、RH850时钟源及配置
- Car Net全文翻译
- Laravel文档梳理7、视图
- CSS3 Box-sizing属性以及解决兼容性的一些做法