`
stephen830
  • 浏览: 2964623 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ListView中有控件隐藏或显示造成的显示错误问题

 
阅读更多

 

ListView中有控件隐藏或显示造成的显示错误问题

 

直接上代码

@Override
	public View getView(final int position, View convertView, ViewGroup parent) {
		ViewHolder holder = null;
		/**
		 * 进行ListView 的优化
		 */
		if (convertView == null) {
			convertView = (ViewGroup) LayoutInflater.from(context).inflate(
					R.layout.abc_fragment_nearby_listview, parent, false);
			holder = new ViewHolder();
			holder.iv_type=(ImageView) convertView.findViewById(R.id.abc_fragment_nearby__listview__iv_type);
			holder.iv_faceimg=(ImageView) convertView.findViewById(R.id.abc_fragment_nearby__listview__iv_faceimg);
			holder.tv_name=(TextView) convertView.findViewById(R.id.abc_fragment_nearby_listview__tv_name);
			holder.iv_player_team_faceimg= (ImageView) convertView.findViewById(R.id.abc_fragment_nearby__listview__iv_player_team_faceimg);
			holder.tv_player_team_name= (TextView) convertView.findViewById(R.id.abc_fragment_nearby__listview__iv_player_team_name);
			convertView.setTag(holder);
			Log.d("TagListView", "新创建ViewHolder");
		} else {
			holder = (ViewHolder)convertView.getTag();
			Log.d("TagListView", "缓存中获取ViewHolder");
		}
		
		//restore view state
		holder.tv_player_team_name.setVisibility(View.VISIBLE);
		holder.iv_player_team_faceimg.setVisibility(View.VISIBLE);

		//get data
		final BeanNearby bean = datas.get(position);
		
		//数据类型
		int type=bean.getType();
		ImageView iv_type= holder.iv_type;
		int[] types = new int[]{R.drawable.abc_fragment_nearby__listview__iv_type0,R.drawable.abc_fragment_nearby__listview__iv_type1,R.drawable.abc_fragment_nearby__listview__iv_type2};
		iv_type.setImageResource(types[type]);
		
		//设置图片
		String faceimg = bean.getFaceimg();
		ImageView iv_faceimg= holder.iv_faceimg;
		logi("faceimg="+faceimg);
		
		//显示图片
		new DownAndShowImageTask(faceimg,iv_faceimg).execute();
		
		//设置名称
		String name = bean.getName();
		TextView tv_name = holder.tv_name;
		tv_name.setText(name);
		
		//如果是球员
		ImageView iv_player_team_faceimg = holder.iv_player_team_faceimg;
		TextView tv_player_team_name =holder.tv_player_team_name;
		String playerTeamName = bean.getPlayerTeamName();
		String playerTeamFaceimg = bean.getPlayerTeamFaceimg();
		if(type==BeanNearby.TYPE_PERSON){
			if(playerTeamName==null){
				playerTeamName="";
			}
			tv_player_team_name.setText(playerTeamName);
			
			if(playerTeamFaceimg!=null&&playerTeamFaceimg.length()>0){
				new DownAndShowImageTask(playerTeamFaceimg,iv_player_team_faceimg).execute();
			}else{
				iv_player_team_faceimg.setVisibility(View.INVISIBLE);
			}
		}else{
			tv_player_team_name.setVisibility(View.GONE);
			iv_player_team_faceimg.setVisibility(View.GONE);
		}

		return convertView;
	}

 

 其中的

//restore view state
holder.tv_player_team_name.setVisibility(View.VISIBLE);
holder.iv_player_team_faceimg.setVisibility(View.VISIBLE);

 这段代码必须要有,对布局进行还原。这是因为在下面的代码中会对控件进行隐藏(View.INVISIBLE)或彻底不显示(View.GONE)。

如果不加这段代码,这个ListView上下滚动时候你会发现数据会发生混乱和错误。

 

分享到:
评论

相关推荐

    ASP.NET 控件的使用

    14.1 使用ListView控件 443 14.1.1 使用LayoutTemplate和ItemTemplate 444 14.1.2 使用GroupTemplate 446 14.1.3 选择一行 448 14.1.4 排序数据库数据 450 14.1.5 编辑数据库数据 452 14.2 使用DataPager控件 456 ...

    ASP.NET.4揭秘

    14.1 使用listview控件506 14.1.1 使用layouttemplate和itemtemplate507 14.1.2 使用grouptemplate510 14.1.3 选择一行512 14.1.4 数据库数据排序515 14.1.5 编辑数据库数据516 14.2 使用datapager控件522 14.2.1 ...

    vfp6.0系统免费下载

    问题 2-7: 我的 Visual FoxPro 5.0 表单中包含有 ListView 或 TreeView 控件,它们不继承其新版本中的最新功能(如支持复选框)。已发布的应用程序中,由于带有这些表单,而在最终用户的机器上出现表单 OLE 错误,...

    C#全能速查宝典

    2.2.35 TextBox控件——输入或显示文本 186 2.2.36 TextChanged事件——Text属性值更改时发生 187 2.3 选择类控件 188 2.3.1 CheckBox控件——复选框控件 188 2.3.2 CheckBoxes属性——是否显示复选框 190 2.3.3 ...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例223 在TextBox控件中显示回车符 297 实例224 只允许输入数字的TextBox控件 298 实例225 在TextBox控件底端显示下划线 299 实例226 屏蔽TextBox控件上的粘贴功能 300 实例227 屏蔽TextBox控件上默认的右键菜单 ...

    C#编程经验技巧宝典

    2 <br>0003 设置程序代码行序号 3 <br>0004 开发环境全屏显示 3 <br>0005 设置窗口的自动隐藏功能 3 <br>0006 根据需要创建所需解决方案 4 <br>0007 如何使用“验证的目标架构”功能 4 ...

    delphi 开发经验技巧宝典源码

    0015 以原始风格显示控件的滚动条 11 0016 使用快捷键打开对象观察器中的“...”按钮 11 1.5 其他相关应用技巧 11 0017 安装合适的Delphi版本 11 0018 熟练掌握Delphi中的菜单项 12 0019 构成Delphi项目...

    Excel VBA实用技巧大全 附书源码

    04168隐藏、显示某单元格所在的行或列 04169隐藏、显示单元格区域 04170单元格区域自动套用格式 04171选定单元格 04172选定单元格,并显示在窗口的左上角处 04173激活单元格 04174合并单元格 04175取消单元格的合并 ...

    delphi 开发经验技巧宝典源码06

    0015 以原始风格显示控件的滚动条 11 0016 使用快捷键打开对象观察器中的“...”按钮 11 1.5 其他相关应用技巧 11 0017 安装合适的Delphi版本 11 0018 熟练掌握Delphi中的菜单项 12 0019 构成Delphi项目...

    物业管理系统

    public bz &&定义全局变量bz=.f.this.listview1.view=2 &&设置视图显示方式 *将ImageList控件图片赋予Listview控件 this.listview1.Icons=this.imagelist1.objectthis.listview1.smallicons=this.imagelist1.object&...

    VBA编程技巧大全

    131-1 使用Listview控件显示数据列表 314 131-2 在Listview控件中使用复选框 317 131-3 调整Listview控件的行距 319 131-4 在Listview控件中排序 322 131-5 Listview控件的图标设置 323 技巧132 调用非模式窗体 326 ...

    VBA常用技巧

    131-1使用Listview控件显示数据列表312 131-2在Listview控件中使用复选框315 131-3调整Listview控件的行距317 131-4在Listview控件中排序320 131-5Listview控件的图标设置321 技巧132调用非模式窗体324 技巧133...

    C#.net_经典编程例子400个

    81 实例068 在ListView控件中对数据排序或统计 83 实例069 在ListView控件中绘制底纹 84 实例070 在列表视图中拖动视图项 85 实例071 用ListView控件选取整行数据 88 实例072 用ListView...

Global site tag (gtag.js) - Google Analytics