给ListView的Item添加CheckBox,长按调出CheckBox,然后通过点击进行选中和取消
来源:互联网 发布:seo 外链 编辑:程序博客网 时间:2024/06/14 08:13
- 首先制作一个CheckBox式样
- 在drawable文件夹中添加文件custom_checkbox_style.xml,内容如下
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/fm_checkbox_pressed" android:state_checked="true"/><item android:drawable="@drawable/fm_checkbox_normal" android:state_checked="false"/><item android:drawable="@drawable/fm_checkbox_normal"/></selector>
- 在values文件夹的styles.xml文件中添加如下内容
<style name="CustomCheckBoxTheme" parent="@android:style/Widget.CompoundButton.CheckBox"><item name="android:button">@drawable/custom_checkbox_style</item></style>
- 在ListView的Item的布局文件中添加CheckBox的相关代码,内容如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"......android:descendantFocusability="blocksDescendants"><CheckBoxandroid:id="@+id/edit_select"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_marginStart="6dp"android:layout_marginEnd="6dp"style="@style/CustomCheckboxTheme"android:visibility="gone"/>......</LinearLayout>
- 特别要说一下android:descendantFocusability="blocksDescendants"这个属性,它的作用是使该控件包含的子控件全部失去焦点,即失去点击效果和作用,这个属性很重要,如果不添加,在这个布局中获取点击焦点的就是CheckBox,而ListView的onItemClick事件就不能触发了
- 然后要修改的就是代码逻辑问题了,修改位置是vender/mediatek/properties/packags/apps/FileManager/src/com/mediatek/filemanager/FileInfoAdapter.java
- 代码中定义了一个FileViewHolder用来管理ListView的Item布局(即上面的写道的布局文件)中的所用控件,这里我们要添加一个CheckBox对象,并在构造方法中进行初始化
static class FileViewHolder{protect TextView mName;protect TextView mSize;protect ImageView mIcon;protect CheckBox mCheckBox;public FileViewHolder(TextView name,TextView size,ImageView icon,CheckBox checkbox){this.mName=name;this.mSize=size;this.mIcon=icon;this.mCheckBox=checkbox;}}
- 最后对getView方法进行修改,这里要清楚getView的实现机制,是如何加载布局的(参考:http://blog.csdn.net/yelbosh/article/details/7831812),主动刷新ListView的item视图可以主动调用方法notifyDataSetChanged();此时如果item布局有改变则ListView中的所有item都随之刷新。
FileViewHolder viewHolder;if(view==null){view=mInflater.inflate(R.layout.adapter_fileinfos,null);viewHolder=new FileViewHolder((TextView)view.findViewById(R.id.ecit_adapter_name),(TextView)view.findViewById(R.id.edit_adapter_size),(ImageView)view.findViewById(R.id.edit_adapter_img),(CheckBox)view.findViewById(R.id.edit_select));view.setTag(viewHolder);}else{viewHolder=(FileViewHolder)view.getTag();}FileInfo currentItem=mFileInfoList.get(pos);switch(mMode){case MODE_EDIT:viewHolder.mCheckBox.setVisibility(View.VISIBLE);//编辑状态下将CheckBox设置为可见if(currentItem.isChecked()){viewHolder.mCheckBox.setChecked(true);//如果当前的item在编辑状态下被选中,则将CheckBox的checked状态设为true}else{viewHolder.mCheckBox.setChecked(false);//如果没有被选中,则为false}break;case MODE_NORMAL:viewHolder.mCheckBox.setVisibility(View.GONE);//在正常模式下需要将CheckBox去掉...}
0 0
- 给ListView的Item添加CheckBox,长按调出CheckBox,然后通过点击进行选中和取消
- listview的item中有checkbox,仍要整个item响应点击或长按事件
- android checkBox 的选中和取消选中
- Android ListView和item中的CheckBox点击冲突的问题解决
- 点击一层,选中/取消选中当前层下面的checkbox
- listview的item分别实现item的点击和checkbox的点击
- listView中添加checkBox按键,点击是否选中处理。
- ListView长按Item显示CheckBox并进行批量删除操作
- 带checkBox的ListView全选和取消。
- checkbox的选中与取消
- android ListView item中添加checkbox之后点击无效的解决办法
- android listview里包含组件(checkbox)点击事件和Item的点击事件冲突
- android listview里包含组件(checkbox)点击事件和Item的点击事件冲突
- Listview里包含组件(checkbox)点击事件和Item的点击事件冲突
- 关于ListView+CheckBox,Item超过一屏时数据乱序和不能全部选中的问题
- 关于ListView+CheckBox,Item超过一屏时数据乱序和不能全部选中的问题
- ListView的Item包含checkBox的时候的点击事件
- listview放入checkbox点击item没有反映
- 现代语音信号处理(胡航版)第1-6章内容简介
- GPUImage 深度应用出现的一个错误
- LDD操作延迟(延缓)
- view里面的tableview顶部被view的导航栏盖住了的问题
- 接口篇(5.2)-03. 接口的合并 ❀ 飞塔 (Fortinet) 防火墙
- 给ListView的Item添加CheckBox,长按调出CheckBox,然后通过点击进行选中和取消
- 【codevs 1007】级数求和
- 唯品会基于Kubernetes(k8s)网络方案演进
- 解决类似超卖问题,mysql加锁
- bzoj1637: [Usaco2007 Mar]Balanced Lineup ——by lethalboy
- javascript 关闭浏览器怎么清空所有的cookie
- 获取不重复的随机数(抽签原理)
- Spring Batch 之 Sample(Hello World)(三)
- Linux系统文件防篡改脚本第一版