最近在做项目时用到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;
}
分享到:
相关推荐
在Android开发中,`Service`和`ListView`是两个非常重要的组件。`Service`用于在后台执行长时间运行的任务,而`ListView`则常用于展示大量的数据列表。下面将详细讲解这两个组件及其相互间的应用。 首先,让我们...
### Android-ListView中嵌套(ListView)控件兼容问题 #### 背景与问题描述 在Android开发中,有时我们需要在`ListView`中嵌套另一个`ListView`以实现更复杂的用户界面设计。然而,在实际操作过程中可能会遇到一些...
标题"ListView+EditText混乱问题"所提及的就是这样一个典型的问题:当用户在ListView中的一个EditText控件中输入文字后,如果ListView滚动或用户点击其他地方,EditText的内容可能会显示不正确,甚至丢失。...
### ListView与ScrollView冲突问题及其解决方法 在Android应用开发中,`ListView`和`ScrollView`是两种常用的布局组件,它们分别用于展示可滚动的列表和单个可滚动的视图。然而,在某些场景下,开发者可能希望在一...
嵌套ListView可能导致性能问题,因为每个ListView都需要绘制自己的内容。可以通过使用ViewHolder模式减少视图的创建和查找,以及在适配器中缓存已计算过的视图高度来提高性能。 10. **保存和恢复选择状态**: 当...
然而,当ListView的数据项数量不确定,或者每个数据项的高度不固定时,如何让ListView动态适应屏幕高度,避免出现滚动条异常或内容显示不全的问题,就成了一个常见的挑战。本篇文章将详细探讨这个问题,并提供一种...
然而,当ListView与EditText结合使用时,经常会遇到焦点问题,这是由于ListView的滚动机制与EditText的输入焦点冲突导致的。本教程将深入探讨这个问题,并提供解决方案。 首先,我们要理解ListView的工作原理。...
标题"listView嵌套listViewDemo"指的是一个示例项目,旨在解决此类问题。描述中提到,这个Demo解决了子ListView无法完全显示所有内容的困境,这是通过自定义ListView实现的。 ListView嵌套ListView的问题通常出现在...
这个问题主要体现在当用户滚动ListView时,CheckBox的状态可能会出现混乱,即先前选中的项目在滚动后出现在其他位置时,其选中状态没有正确恢复。 为了解决这个复用问题,我们需要理解ListView的工作原理。ListView...
然而,当ListView与EditText结合使用时,常常会遇到一个常见的问题:EditText无法获取焦点,导致软键盘无法弹出,影响用户输入。这个问题主要是因为ListView的滚动机制和EditText的焦点管理机制之间存在冲突。为了...
当需求涉及列表中的每个条目本身也需要展示一个子列表时,我们就会遇到ListView的嵌套问题。本教程将详细讲解如何在Android Studio环境下实现ListView的嵌套,以满足这种复杂布局的需求。 首先,我们需要了解基本的...
然而,当在一个ScrollView中嵌套一个ListView时,就会出现一些特殊的问题,主要是关于滑动事件的处理,即所谓的“滑动冲突”。 首先,我们要理解滑动冲突的本质。当ScrollView和ListView同时存在于同一个布局中,...
这篇教程或资源,"listview中文件列表实现与OS的拖放操作",显然讲解了如何在ListView控件中实现操作系统级别的拖放功能,使得用户可以像在Windows资源管理器中一样,方便地对文件进行拖放操作。 拖放操作是用户...
然而,在实际应用中,我们可能会遇到一个常见的问题,即如何设置ListView的列宽以确保最小宽度,防止内容被截断。本文将深入探讨这个问题,并提供解决方案。 在WPF的ListView中,列宽通常是自动调整的,以适应其...
当在一个ScrollView中嵌套一个ListView时,可能会遇到一些特定的问题,尤其是在实现下拉刷新功能时。本文将深入探讨这些问题及其解决方案。 ### 问题1:滑动冲突 由于ScrollView和ListView都具有滚动功能,它们之间...
ListView的item选择问题是一个常见的编程挑战,涉及到用户交互、数据绑定和状态管理等多个方面。以下将详细阐述ListView的item选择机制及其相关知识点。 1. **ListView的Item点击事件处理** - 在ListView中,我们...
为了解决ListView闪屏问题,我们可以采取以下几种方法: 1. **双缓冲技术**:双缓冲是一种优化图形显示的技术,通过在内存中先完成所有绘制,然后一次性绘制到屏幕上,避免了多次绘制导致的闪烁。在C#中,可以...
在ListView中嵌套多个EditText时,常常会遇到一个问题,即用户在EditText中输入内容时,ListView滚动时导致显示混乱,原本输入的位置与EditText不匹配,这被称为“EditText焦点错乱”或“ListView复用机制问题”。...
同时,对于嵌套ListView,要考虑性能问题,避免内存和计算资源的过度消耗。 8. **适配器(Adapter)设计**:为了管理嵌套的ListView,可能需要创建两个Adapter,一个用于父级ListView,另一个用于子级ListView。...
- 嵌套ListView可能导致性能问题,因为每个ListView都需要有自己的滑动机制。因此,要确保正确处理滑动手势,避免冲突。 - 监听器的设置和事件分发可能会变得复杂,需要仔细处理。 通过以上步骤,你可以成功地在...