ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android记录21-关于ListView数据错乱的解决方案(1),移动跨平台开发框架移动

2021-12-29 15:32:52  阅读:300  来源: 互联网

标签:移动 21 视图 跨平台 convertView 错乱 position ListView holder


private Context mContext;

@Override

public int getCount() {

return 0;

}

@Override

public Object getItem(int position) {

return position;

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;

if (convertView == null) {

holder = new ViewHolder();

convertView = LayoutInflater.from(mContext).inflate(R.layout.custom_list_item, null);

holder.headIcon = (ImageView) convertView.findViewById(R.id.iv_small_head);

holder.username = (TextView) convertView.findViewById(R.id.tv_name);

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

return convertView;

}

static class ViewHolder {

private ImageView headIcon;

private TextView username;

}

}

以上是最简单的自定义adapter代码,就是简单对convertView进行复用,复用的意思是回收已经用过的视图,需要显示的时候再次利用。这种方法效率很高,无论你的数据有多少条,都可以很流畅的进行显示。

这里有一张图可以很好的体现ListView的复用原理:

这里写图片描述

我们每次绘制视图的时候都会调用getView这个方法,它有三个参数分别是:

position - 视图的位置,从0开始。

convertView - 我们最外层的视图,也就是我们的动态加载进来的布局,每一项条目。

parent - 我们视图的父容器。

这里就只是简单对ListView的复用原理进行了介绍,下面抛出一个问题:

**ListView在滑动的时候显示数据错乱,

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整资料开源分享

如何解决**

利用ListView的复用机制虽然为数据显示避免了卡顿,提高了显示的效率,但也会引起ListView数据显示错乱的问题。这里列出会出现的一些问题:

  • 图片显示重复

  • 图片显示错乱

  • 图片显示闪烁

  • 文本内容显示错乱

这是我们在实际开发中经常遇到的问题,下面来提一些解决方案:

无论是数据显示重复还是错乱,都是因为ListView的缓存机制导致的,我们在快速滑动的时候,可能因为缓存而导致数据的重复。

**图片可以使用异步加载来解决这个问题,可以选用ImageLoader框架来异步请求网络图片。

如果是本地图片的话,可以使用设置tag来避免数据错乱**。

int simple_avatar_id = Integer.valueOf(commentDomain.getCommentIcon());

最后,如果大伙有什么好的学习方法或建议欢迎大家在评论中积极留言哈,希望大家能够共同学习、共同努力、共同进步。

小编在这里祝小伙伴们在未来的日子里都可以 升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰!!

不论遇到什么困难,都不应该成为我们放弃的理由!

很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习

如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

标签:移动,21,视图,跨平台,convertView,错乱,position,ListView,holder
来源: https://blog.csdn.net/m0_65687184/article/details/122216942

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有