`
不夜的星辰
  • 浏览: 88309 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

listview中控件回显问题

 
阅读更多

最近在做项目时用到listview中包括checkBox控件,当listview高度超出屏幕执行上下滑屏时之前被选中的checkBox会因为重新加载视图而被置为未选中;解决方法如下:

private Boolean[] isCheck;//解决checkBox回显问题
	
	public ListAdapter(Context ctx,List<Map<String, String>> data){
		this.context = ctx;
		this.list = data;
		isCheck = new Boolean[data.size()];
		for(int i=0;i<isCheck.length;i++){
			isCheck[i] = false;
		}
	}
	@Override
	public int getCount() {
		return list.size();
	}

	@Override
	public Object getItem(int position) {
		return list.get(position);
	}

	@Override
	public long getItemId(int position) {
		return position;
	}

	@Override
	public View getView(final int position, View convertView, ViewGroup parent) {
		HoldView holdView = null;
		if(holdView == null){
			holdView = new HoldView();
			convertView = LayoutInflater.from(context).inflate(R.layout.export, null);
			holdView.tvName = (TextView) convertView.findViewById(R.id.tv_export_name);
			holdView.tvPhone = (TextView) convertView.findViewById(R.id.tv_export_phone);
			holdView.cBox = (CheckBox) convertView.findViewById(R.id.cb_export_id);
			convertView.setTag(holdView);
		}else {
			holdView = (HoldView) convertView.getTag();
		}
		holdView.tvName.setText(list.get(position).get("name"));
		holdView.tvPhone.setText(list.get(position).get("phone"));
		holdView.cBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			
			@Override
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
				if(isChecked){
					cbSelectName.add(list.get(position).get("name"));
					cbSelectList.add(list.get(position).get("phone"));
					isCheck[position] = true;
				}else {
					cbSelectName.remove(list.get(position).get("name"));
					cbSelectList.remove(list.get(position).get("phone"));
					isCheck[position] = false;
				}
			}
		});
		holdView.cBox.setChecked(isCheck[position]);
		return convertView;
	}

	class HoldView{
		ImageView imageView;
		TextView tvName;
		TextView tvPhone;
		CheckBox cBox;
	}

 

分享到:
评论

相关推荐

    service与listview

    在Android开发中,`Service`和`ListView`是两个非常重要的组件。`Service`用于在后台执行长时间运行的任务,而`ListView`则常用于展示大量的数据列表。下面将详细讲解这两个组件及其相互间的应用。 首先,让我们...

    Android-ListView中嵌套(ListView)控件兼容问题

    ### Android-ListView中嵌套(ListView)控件兼容问题 #### 背景与问题描述 在Android开发中,有时我们需要在`ListView`中嵌套另一个`ListView`以实现更复杂的用户界面设计。然而,在实际操作过程中可能会遇到一些...

    ListView+EditText混乱问题

    标题"ListView+EditText混乱问题"所提及的就是这样一个典型的问题:当用户在ListView中的一个EditText控件中输入文字后,如果ListView滚动或用户点击其他地方,EditText的内容可能会显示不正确,甚至丢失。...

    listview与scrollview冲突问题解决

    ### ListView与ScrollView冲突问题及其解决方法 在Android应用开发中,`ListView`和`ScrollView`是两种常用的布局组件,它们分别用于展示可滚动的列表和单个可滚动的视图。然而,在某些场景下,开发者可能希望在一...

    ListView嵌套ListView带多选,全选,反选,选中数量

    嵌套ListView可能导致性能问题,因为每个ListView都需要绘制自己的内容。可以通过使用ViewHolder模式减少视图的创建和查找,以及在适配器中缓存已计算过的视图高度来提高性能。 10. **保存和恢复选择状态**: 当...

    android listview 动态适应高度问题

    然而,当ListView的数据项数量不确定,或者每个数据项的高度不固定时,如何让ListView动态适应屏幕高度,避免出现滚动条异常或内容显示不全的问题,就成了一个常见的挑战。本篇文章将详细探讨这个问题,并提供一种...

    安卓listview相关相关-Android开发之ListView+EditText焦点问题解决方案.rar

    然而,当ListView与EditText结合使用时,经常会遇到焦点问题,这是由于ListView的滚动机制与EditText的输入焦点冲突导致的。本教程将深入探讨这个问题,并提供解决方案。 首先,我们要理解ListView的工作原理。...

    listView嵌套listViewDemo

    标题"listView嵌套listViewDemo"指的是一个示例项目,旨在解决此类问题。描述中提到,这个Demo解决了子ListView无法完全显示所有内容的困境,这是通过自定义ListView实现的。 ListView嵌套ListView的问题通常出现在...

    android listview控件复用问题解决

    这个问题主要体现在当用户滚动ListView时,CheckBox的状态可能会出现混乱,即先前选中的项目在滚动后出现在其他位置时,其选中状态没有正确恢复。 为了解决这个复用问题,我们需要理解ListView的工作原理。ListView...

    自定义ListView解决ListView+EditText焦点的问题

    然而,当ListView与EditText结合使用时,常常会遇到一个常见的问题:EditText无法获取焦点,导致软键盘无法弹出,影响用户输入。这个问题主要是因为ListView的滚动机制和EditText的焦点管理机制之间存在冲突。为了...

    android的listview嵌套listview,列表嵌套列表 android studio版本

    当需求涉及列表中的每个条目本身也需要展示一个子列表时,我们就会遇到ListView的嵌套问题。本教程将详细讲解如何在Android Studio环境下实现ListView的嵌套,以满足这种复杂布局的需求。 首先,我们需要了解基本的...

    ScrollView嵌套ListVIew两者之间滑动问题

    然而,当在一个ScrollView中嵌套一个ListView时,就会出现一些特殊的问题,主要是关于滑动事件的处理,即所谓的“滑动冲突”。 首先,我们要理解滑动冲突的本质。当ScrollView和ListView同时存在于同一个布局中,...

    listview中文件列表实现与OS的拖放操作

    这篇教程或资源,"listview中文件列表实现与OS的拖放操作",显然讲解了如何在ListView控件中实现操作系统级别的拖放功能,使得用户可以像在Windows资源管理器中一样,方便地对文件进行拖放操作。 拖放操作是用户...

    解决Scrollview嵌套listview下拉刷新的一些问题

    当在一个ScrollView中嵌套一个ListView时,可能会遇到一些特定的问题,尤其是在实现下拉刷新功能时。本文将深入探讨这些问题及其解决方案。 ### 问题1:滑动冲突 由于ScrollView和ListView都具有滚动功能,它们之间...

    listview item 选择问题

    ListView的item选择问题是一个常见的编程挑战,涉及到用户交互、数据绑定和状态管理等多个方面。以下将详细阐述ListView的item选择机制及其相关知识点。 1. **ListView的Item点击事件处理** - 在ListView中,我们...

    解决VC#中ListView闪屏的问题

    为了解决ListView闪屏问题,我们可以采取以下几种方法: 1. **双缓冲技术**:双缓冲是一种优化图形显示的技术,通过在内存中先完成所有绘制,然后一次性绘制到屏幕上,避免了多次绘制导致的闪烁。在C#中,可以...

    解决wpf ListView最小列宽问题

    然而,在实际应用中,我们可能会遇到一个常见的问题,即如何设置ListView的列宽以确保最小宽度,防止内容被截断。本文将深入探讨这个问题,并提供解决方案。 在WPF的ListView中,列宽通常是自动调整的,以适应其...

    ListView嵌套ListView全选,多选

    同时,对于嵌套ListView,要考虑性能问题,避免内存和计算资源的过度消耗。 8. **适配器(Adapter)设计**:为了管理嵌套的ListView,可能需要创建两个Adapter,一个用于父级ListView,另一个用于子级ListView。...

    Android listview嵌套listview

    - 嵌套ListView可能导致性能问题,因为每个ListView都需要有自己的滑动机制。因此,要确保正确处理滑动手势,避免冲突。 - 监听器的设置和事件分发可能会变得复杂,需要仔细处理。 通过以上步骤,你可以成功地在...

    Android完美解决listview中多个edittext显示混乱问题

    在ListView中嵌套多个EditText时,常常会遇到一个问题,即用户在EditText中输入内容时,ListView滚动时导致显示混乱,原本输入的位置与EditText不匹配,这被称为“EditText焦点错乱”或“ListView复用机制问题”。...

Global site tag (gtag.js) - Google Analytics