Android 继承BaseAdapter适配器中的getView方法,导致的ListView条目出现重复解决办法(转载)

简介:

出现该问题原因为在设置每个条目的值的时候,将设定值的代码放在了判断语句里面,导致有些条目会重复。

对list不清楚导致的错误,特标记之。

错误代码如下,设置应用名称下面的几行值,实践证明,他们的赋值需要在判断条件以外:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public  View getView( int  position, View convertView, ViewGroup parent) { // TODO Auto-generated method stubLog.i(TAG, "getView position = " + position);
 
         ViewHolder viewHolder =  new  ViewHolder(); if  (convertView ==  null ) {
             convertView = mInflater.inflate(R.layout.apps_list_item,  null );
             viewHolder.cb_installed = (CheckBox) convertView
                     .findViewById(R.id.cb_checkedApp);
             viewHolder.iv_appIcon = (ImageView) convertView
                     .findViewById(R.id.iv_app_icon);
             viewHolder.tv_appName = (TextView) convertView
                     .findViewById(R.id.tv_app_name);
             // 设置应用名称
             String mAppName = mData.get(position);
             Log.i( "new" "position "  + position +  " mAppName = "  + mAppName);
             viewHolder.iv_appIcon.setImageResource(R.drawable.ic_launcher);
             viewHolder.tv_appName.setText(mAppName);
             viewHolder.cb_installed.setChecked(isSelected.get(position));
             convertView.setTag(viewHolder);
         } else {
             viewHolder = (ViewHolder)convertView.getTag();
         } return  convertView;        
     }

将这些赋值放在外面,修改后如下,正常了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public  View getView( int  position, View convertView, ViewGroup parent) { // TODO Auto-generated method stubLog.i(TAG, "getView position = " + position);
 
         ViewHolder viewHolder =  new  ViewHolder(); if  (convertView ==  null ) {
             convertView = mInflater.inflate(R.layout.apps_list_item,  null );
             viewHolder.cb_installed = (CheckBox) convertView
                     .findViewById(R.id.cb_checkedApp);
             viewHolder.iv_appIcon = (ImageView) convertView
                     .findViewById(R.id.iv_app_icon);
             viewHolder.tv_appName = (TextView) convertView
                     .findViewById(R.id.tv_app_name);
             convertView.setTag(viewHolder);
         } else {
             viewHolder = (ViewHolder)convertView.getTag();
         }        
         // 设置应用名称
         String mAppName = mData.get(position);
         Log.i( "new" "position "  + position +  " mAppName = "  + mAppName);
         viewHolder.iv_appIcon.setImageResource(R.drawable.ic_launcher);
         viewHolder.tv_appName.setText(mAppName);
         viewHolder.cb_installed.setChecked(isSelected.get(position));
         return  convertView;        
     }









本文转自 我不会抽烟 51CTO博客,原文链接:http://blog.51cto.com/zhouhongyu1989/1417823,如需转载请自行联系原作者

目录
相关文章
|
5月前
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
106 2
基于Android P,自定义Android开机动画的方法
|
5月前
|
Android开发
基于android-11.0.0_r39,系统应用的手动签名方法和过程
本文介绍了基于Android 11.0.0_r39版本进行系统应用手动签名的方法和解决签名过程中遇到的错误,包括处理`no conscrypt_openjdk_jni-linux-x86_64`和`RegisterNatives failed`的问题。
253 2
|
3月前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
101 15
Android 系统缓存扫描与清理方法分析
|
4月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
62 2
|
5月前
|
Android开发
Android在rootdir根目录创建自定义目录和挂载点的方法
本文介绍了在Android高通平台的根目录下创建自定义目录和挂载点的方法,通过修改Android.mk文件并使用`LOCAL_POST_INSTALL_CMD`变量在编译过程中添加目录,最终在ramdisk.img的系统根路径下成功创建了`/factory/bin`目录。
271 1
|
5月前
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
706 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
5月前
|
Android开发
Android项目架构设计问题之onFirstItemVisibleChanged方法的调用如何解决
Android项目架构设计问题之onFirstItemVisibleChanged方法的调用如何解决
45 0
|
2月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
1月前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
57 19
|
1月前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
65 14