android listview 动态刷新的问题

在 listview 滚定时 item会产生复用。

也就是说listview缓存的item是一定的,在滚动后,更新的时候,会复用前边不再使用的item。

所以在更新控件 尤其是进度条之类的,就需要进行判断,判断当前更新的item是否在可视的item中

即 在

Listview.getFirstVisiblePosition() 和 Listview.getLastVisiblePosition() 之间

如果不在就需要计算 该位置相当于哪一个可视的item, 然后获取那个item 进行更新数据。

附上代码段

int firstVisiblePosition = musicListview.getFirstVisiblePosition();

int lastVisiblePosition = musicListview.getLastVisiblePosition();

if (position >= firstVisiblePosition && index <= lastVisiblePosition) {

View view = musicListview.getChildAt(position - firstVisiblePosition);

if (view.getTag() instanceof ListAdapter.InnerItem) {

ListAdapter.InnerItem innerItem = (ListAdapter.InnerItem) view.getTag();

innerItem.ProgreddBar.setProgress((float) progress / 100.0f);

}

}

时间: 2024-10-13 18:48:58

android listview 动态刷新的问题的相关文章

Android ListView动态刷新某项Item

使用ViewHolder来刷新某项数据,而不用每次都全部刷新数据. 继承BaseAdapter,新建ViewHolder类. public class TestListAdapter extends BaseAdapter { private Context mContext; private List<String> strList; public TestListAdapter(Context context, List<String> list) { super(); thi

Android——ListView布局+适配器(三)

Android--ListView布局+适配器(三) package com.example.administrator.newstop; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import andro

Android——ListView多布局+适配器(二)

Android--ListView多布局+适配器(二) <span style="font-size:18px;">package com.example.administrator.newstop.entity; /** * Created by Administrator on 2016/8/4. */ public class News { private String title; private String pubDate; private int img; p

Android ListView复杂列表优化实践

原文:Android ListView复杂列表优化实践 很多社交App都不免会涉及到复杂的列表元素实现,一个列表上面可能大量的图片,不定长的评论列表,给手机端的程序员带来了不少的挑战.本文就是在实现复杂的列表滑动的情况下,利用已知的优化方法指导下的一次优化实践,旨在提升ListView的滑动流畅度,为用户带来良好的体验. 1:设计稿: 这是列表中可能出现的ItemView,有两种,但是又有许多相同的地方,比如一样有点赞的图片,评论等...其中,评论和点赞的数量是可变的. 2:使用一般布局带来的问

[转]Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件

Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件. 1.为了防止拖动ListView时,在列表末尾重复数据显示.需要加入 HashMap<Integer,View> lmap = new HashMap<Integer,View>();其中Integer为列表位置,View为子项视图,加入数据前首先if (lmap.get(position)==null) ,满足条件时,加入lmap.put(position, convertView

android listview级联三菜单选择地区,本地数据库sqlite级联地区,item选中不变色

前言:因为找了N多网上的资源都没有好的解决方案,别人都是只给思路没给具体源码,真TMD纠结,干嘛求别人,自己动手才是真,最痛恨那些所谓大牛的作风,给了点点代码就让别人去想,你让我们这种小白情何于堪!!!!!!此例是基于listview来实现本地sqlite实现的! 二话不说,程序猿求的是有图有真相有源码!大家下载后有什么问题可以找到本人:QQ508181017 核心代码如下 1.数据库操作类 package com.icq.demo.db; import java.util.ArrayList;

关于android:listview getChildAt 为空的解释

今天遇到了一个很奇怪的问题,我所设定的一个listview 有10个item,当我的 list.getCount 的数量对其进行for 循环的时候,当到第6个item的时候,得到的view对象却是null,这让我很费解,经过一番查询,明白了这个问题是怎么回事,与大家分享下: 如图片红框部分的listview部分.这其实涉及到android的listview控件的内存处理问题:当我们加载listview时,如果这个listview的数据量比较多,它是显示不完全的,但这时是否是所有的数据都已经加载?

android Listview分批加载+自动加载(附源码下载)

直接上代码,代码有注释: public class TestForListviewActivity extends Activity implements OnScrollListener { private ListView mListview = null; private View mFooterView; private PaginationAdapter mAdapter; private Handler handler=new Handler(); private boolean i

Android ListView常见属性问题

Question 1: listview在拖动的时候背景图片消失变成黑色背景.等到拖动完毕我们自己的背景图片才显示出来. 解决办法: xml中: android:scrollingCache="false"  或者 android:cacheColorHint="#00000000" 代码中: setScrollingCacheEnabled(false)  或者 setCacheColorHint(0)  或者setCacheColorHint(Color.TRA