ListView数据显示混乱
在使用自定义ListView视图时,经常会采用重用ListView中视图的方式来提高滑动和显示效率,但是随之而来的一个问题是listview中数据经常显示混乱。
通常情况下,我们重写的方法是这样的:
inflater = LayoutInflater.from(context);
@Override
  public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
      convertView = inflater.inflate(R.layout.book_item, null);
      holder = new ViewHolder(convertView);
      Book book = books.get(position);
      holder.bookName.setText(book.getName());
      holder.bookTime.setText(book.getTime());
      convertView.setTag(holder);
    } else {
      holder = (ViewHolder) convertView.getTag();
    }
    return convertView;
  }
  class ViewHolder {
    ImageView bookPic;
    TextView bookName;
    TextView bookTime;
    public ViewHolder(View view) {
      bookPic = (ImageView) view.findViewById(R.id.iv_book_pic);
      bookName = (TextView) view.findViewById(R.id.tv_book_name);
      bookTime = (TextView) view.findViewById(R.id.tv_book_time);
    }
  }
这样通常会造成list显示混乱,是因为当我们重用视图但是convertView != null的时候我们并没有去重新加载数据,写成下面这种形式就会重新加载数据了:
@Override
  public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
      convertView = inflater.inflate(R.layout.book_item, null);
      holder = new ViewHolder(convertView);
      convertView.setTag(holder);
    } else {
      holder = (ViewHolder) convertView.getTag();
    }
    Book book = books.get(position);//不管视图是否重用,都重新设置数据
    holder.bookName.setText(book.getName());
    holder.bookTime.setText(book.getTime());
    return convertView;
  }												
											ListView数据显示混乱的更多相关文章
- 一起学android之设置ListView数据显示的动画效果(24)
		
效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpX3FpbmdfeHVfa29uZw==/font/5a6L5L2T/fontsize/40 ...
 - ListView的自定义适配器及其优化(listView序号混乱问题的处理)
		
ListView是最常使用的android组件之一,关于listView的优化问题刚刚了解了一些,在这里做出总结. PS:如果想让ListView中的item根据数据内容显示item的大小,需要在it ...
 - app开发之deviceone
		
deviceone,跨平台.低成本.纯原生的app开发服务,具体介绍见:http://www.deviceone.net/ do不同于dcloud.rn等开发套件,do只是一座桥梁,可以选择使用jav ...
 - android 70   使用ListView把数据显示至屏幕
		
使用单元测试添加数据: package com.itheima.showdata; import java.sql.ResultSet; import android.content.Context; ...
 - android listview 重用view导致的选择混乱问题
		
20150526 listview是常用的控件,经常用自定义的adapter,为了提高显示效率,常利用view的重用方式防止重绘,但因为重用利用的是旧的view,常导致显示的数据会由于position ...
 - Android在ListView显示图片(重复混乱闪烁问题)
		
Android在ListView显示图片(重复混乱闪烁问题) 1.原因分析 ListView item缓存机制: 为了使得性能更优,ListView会缓存行item(某行相应的View). ListV ...
 - Android在ListView滑动数据混乱
		
我相信做过Android应用程序开发或多或少都遇到了这个问题.或者是在ListView数据损坏幻灯片事件.要么GridView数据损坏幻灯片事件. 让我们来看看一个网友写的文章,个人感觉还不错的文章: ...
 - 滚动ListView时图像顺序混乱
		
本文选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术.本文将为读者讲解滚动ListView时图像顺序混 ...
 - 如何获取listview里面的edittext或者RadioGroup的值,涉及到引发的混乱现象
		
最近要实现从数据库读数据,该数据对应listview的item布局里面的RadioButton值,并且item布局里面还有EditText的控件. 如何将每一条对应的listview对应值获取出来呢? ...
 
随机推荐
- 记一次SortedDictionary的不当使用
			
起初想用SortedDictionary做游戏中的排行榜,代码如下: using UnityEngine; using System; using System.Collections; using ...
 - Uva 1626,括号序列
			
题目链接:https://uva.onlinejudge.org/external/16/1626.pdf 题意: 给定一个字符串,看是否括号匹配,不匹配加括号,加最少的括号使得匹配.输出该结果. 分 ...
 - ubuntu下环境变量
			
01:/etc/environment:是设置整个系统的环境: 02:/etc/profile:是设置所有用户的环境: 03:.bashrc :本地用户:
 - Android 环信的使用
			
1.导入包 http://docs.easemob.com/doku.php?id=start:200androidcleintintegration:10androidsdkimport 在清单文件 ...
 - VC++ 监控指定目录改变
			
转载:http://www.cnblogs.com/doublesnke/archive/2011/08/16/2141374.html VC++实施文件监控:实例和详解 相关帮助: http://h ...
 - C# 多线程之一:信号量Semaphore
			
通过使用一个计数器对共享资源进行访问控制,Semaphore构造器需要提供初始化的计数器(信号量)大小以及最大的计数器大小 访问共享资源时,程序首先申请一个向Semaphore申请一个许可证,Sema ...
 - JS常用的腳本庫--包括在線編輯器
			
原文链接 一.基本库 1.jQuery a.简介 JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, F ...
 - 列联表(Crosstabs)
			
四格表(2*2的列联表): Tmin为最小的频数:N为频数之和. 1 当 Tmin≥5,N≥40时, 用普通卡方检验公式;2 当1≦Tmin≦5, N≥40时, 用校正卡方检验公式;3 Tmin< ...
 - 4,帮助命令man
			
一:man man是manual的缩写,文档的意思 man man(1),代表man下是分用户级别的,
 - 精通正则表达式(第三版)——Mastering Regular Expressions,3rd Edition——读书笔记1
			
基础知识介绍: 子表达式匹配 环视 引号内的字符串:"(^")*" 12小时制:(1[0123]|[1-9]):[0-5][0-9]*(am|pm) 24小时制:(([0 ...