`

ListView和CheckBox整合:分别响应对应的事件

 
阅读更多

核心代码:

// ListView的单击事件
		imgListView.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				// 加载图片预览
				BitmapFactory.Options options = new BitmapFactory.Options();
				options.inSampleSize = 2;
				bitmap = BitmapFactory.decodeFile(pathsList.get(arg2), options);
				preImage.setImageBitmap(bitmap);

				// String msg = "";
				// for (int i = 0; i < isSelected.size(); i++) {
				// if (isSelected.get(i) == true) {
				// msg = msg + pathsList.get(i) + "第" + i + "张" + "\n";
				// }
				// }
				//
				// ShowMsg.showToast(getApplicationContext(), handler, msg);

				/******* 直接点击ListView设置checkbox ********/
				// ViewHolder vHollder = (ViewHolder) arg1.getTag();
				// 在每次获取点击的item时将对于的checkbox状态改变,同时修改map的值。
				// vHollder.checkBox.toggle();// 反转当前视图的选中状态
				// 点击预览
				// String text = "";
				// String select_id = "";
				// if (vHollder.checkBox.isChecked() == true) {
				// isSelect[arg2] = true;
				//
				// } else {
				// isSelect[arg2] = false;
				// }
				//
				// for (int i = 0; i < isSelect.length; i++) {
				// if (isSelect[i]) { // 如果该选项被选中
				// text = text + pathsList.get(i) + "第" + i + "张" + "\n";
				// select_id = select_id + i + ";";
				// Toast.makeText(getApplicationContext(),
				// "选中了:\n" + text, 5000).show();
				// }
				// }
				// hasSelect = select_id;
				// ListPicAdapter.isSelected.put(arg2, vHollder.checkBox
				// .isChecked());

			}

		});

 

public View getView(int position, View convertView, ViewGroup parent) {
		ViewHolder holder = null;
		// convertView为null的时候初始化convertView。
		if (convertView == null) {
			holder = new ViewHolder();
			convertView = mInflater.inflate(R.layout.listphoto, null);
			holder.filename = (TextView) convertView
					.findViewById(R.id.filename);
			holder.imageView = (ImageView) convertView.findViewById(R.id.image);
			holder.checkBox = (CheckBox) convertView.findViewById(R.id.cb);

			convertView.setTag(holder);
		} else {
			holder = (ViewHolder) convertView.getTag();
		}
		holder.filename.setText(SDCard.getName(imgPaths.get(position)));
		holder.imageView.setImageBitmap(photos.get(position).getBitmap());
		holder.checkBox.setChecked(isSelected.get(position));
		final CheckBox checkBox = holder.checkBox;
		final int arg2 = position;
		checkBox.setChecked(isSelected.get(position));
		checkBox.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				// 记录CheckBox的状态
				if (isSelected.get(arg2)) {
					isSelected.put(arg2, false);
				} else {
					isSelected.put(arg2, true);
				}
				notifyDataSetChanged();
			}
		});
		checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			public void onCheckedChanged(CompoundButton buttonView,
					boolean isChecked) {
			}
		});
		return convertView;
	}

 

分享到:
评论

相关推荐

    ListView中添加CheckBox

    原因:checkbox的优先级高于ListItem于是屏蔽了ListItem的单击事件。 解决方案:设置checkbox的android:focusable="false" 2、选择其中的checkbox,当滚动ListView的时候,会出现一些Checkbox选择错位的现象, ...

    Listview+Edittext和ListView+CheckBox

    本话题主要探讨如何在ListView中集成EditText和CheckBox,以实现更具交互性的功能。 1. **ListView基础**: - ListView是一个可滚动的视图,通常用于显示一组项目,每个项目由一个View或一个ViewGroup表示。 - 它...

    ListView和CheckBox结合_以及CheckBox复用_以及CheckBox设置点击事件的效率问题

    ListView和CheckBox结合_以及CheckBox设置点击事件的效率问题 其中实现的功能是: 1.选择一个条目后,回到第二个界面,条目内容要在第一个界面展示 2.CheckBox的条目被选中后,下拉时其它条目也有被选中问题 3.当...

    WPF中ListView添加CheckBox列

    在实际的应用场景中,我们经常需要在ListView中添加可选的复选框(CheckBox)列,以便用户能够选择一个或多个项目。本文将详细探讨如何在WPF的ListView中实现这一功能。 首先,我们需要理解WPF中的数据绑定机制。在...

    delphi中listview启用checkbox实现单选

    总之,通过监听ListView的`ItemClick`事件并在事件处理函数中进行适当的逻辑控制,我们可以在Delphi7的ListView控件中启用复选框并实现单选功能。这不仅适用于基本的列表展示,还可以应用于各种复杂的业务场景,为...

    ListView添加CheckBox复选框

    记得在布局文件中为ListView指定适配器的布局,通常是一个包含TextView和CheckBox的布局。 总结起来,实现ListView中CheckBox复选框功能主要涉及以下步骤: 1. 创建自定义的ListView适配器,继承自BaseAdapter。 2...

    完美解决ListView和CheckBox的焦点冲突及CheckBox的复用问题

    可以创建一个HashMap来存储每个ListView项的ID和对应的CheckBox状态。在刷新或加载后,根据HashMap恢复CheckBox的状态,确保新加载的数据依然能反映出用户的先前选择。 六、代码实践 在具体实现中,可以创建一个...

    如何使用LISTVIEW虚拟模式和Checkbox

    ### 如何使用LISTVIEW虚拟模式和Checkbox #### 一、使用虚拟模式 ##### 1. 在使用之前进行设置 为了启用虚拟模式,我们有两种方法来设置`ListView`控件: - **通过属性设置**:在控件的属性窗口中找到“行为”...

    ListView复用checkBox的解决方法

    总结来说,解决ListView复用checkBox的问题,关键在于适当地在`getView()`方法中设置checkBox的状态,并且在点击事件中更新数据源和选中计数。这样,即使视图被复用,也能确保每个checkBox的状态正确反映其对应的...

    listview和checkbox抢焦点

    在具体的代码实现中,可能还需要对ListView的Adapter进行一些调整,确保每个Item的布局中,CheckBox的clickable和focusable属性都设置为true,以便它们能够响应用户的触摸事件。 在提供的"PhoneInteceptor_v2"文件...

    ListVIew 实现Checkbox多选

    `getView()` 方法中,我们设置了Checkbox的文本和初始选中状态,并添加了一个CheckedChangeListener,当Checkbox的状态改变时,会触发这个监听器,更新对应位置的选中状态。 接下来,你需要在布局文件(如 `list_...

    解决ListView嵌套CheckBox滑动时选中状态错乱

    这个类可能包括了对状态更新和事件处理的优化,确保在ListView滑动时能正确处理CheckBox的选中状态。 总结来说,解决ListView嵌套CheckBox滑动时的选中状态错乱问题,需要深入理解ListView的工作机制,合理利用...

    listview+checkbox 多选

    综上所述,通过自定义ListView的列表项布局,复写数据适配器,处理Checkbox的点击事件,以及实现双向选择功能,我们就能在Android应用中实现“listview+checkbox”的多选效果。这样的设计不仅让用户能够方便地选择多...

    WPF ListView控件中CheckBox全选联动

    同时,为了实现双向绑定,我们还需要在ViewModel中添加一个命令,用于响应ListView的主CheckBox的点击事件,更新IsAllSelected的值: ```csharp private RelayCommand _selectAllCommand; public RelayCommand ...

    c# ListView CheckBox 索引值

    在C#编程中,ListView控件是一个常用的组件,用于显示数据列表。当我们在ListView中添加了CheckBox复选框功能时,可能需要获取被选中的项的...以上步骤可以帮助开发者实现对ListView中CheckBox操作的响应和数据处理。

    ListView带CheckBox 你懂的

    "ListView带CheckBox"的主题,主要涉及如何在ListView的每个列表项中集成CheckBox,并处理滑动过程中可能出现的选中状态错乱问题,以及实现全选、反选等高级功能。下面将详细介绍这些关键知识点。 1. **自定义...

    实现ListView中CheckBox的选中和选中项的记录

    通过以上步骤,我们可以实现ListView中CheckBox的选中状态管理和选中项记录。这不仅提高了用户体验,也为开发复杂的业务逻辑提供了基础。在实际项目中,可能还需要考虑多线程同步、异常处理等细节,以保证程序的稳定...

    listview中添加CheckBox的完美实现

    然而,添加 CheckBox 到 ListView 中并不是一件简单的事情,因为它需要解决事件冲突和复用错误的问题。 在本文中,我们将实现一个完美的 ListView 中添加 CheckBox 的解决方案。这个解决方案可以将 ListView 子项中...

    ListView和CheckBox的混乱问题

    主要是解决主要是解决我以前的一篇博客仿微信添加群聊界面——addView里listview和checkbox混乱的问题,详细请看我的博客http://blog.csdn.net/jiang89125/article/details/50379364

    listview的checkbox状态保存及内存优化

    创建一个静态内部类ViewHolder,包含CheckBox等需要的View,然后在getView()方法中通过ViewHolder获取CheckBox,确保每次都能正确找到对应的View。 ```java static class ViewHolder { CheckBox checkBox; } @...

Global site tag (gtag.js) - Google Analytics