ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:181.73KB ,
资源ID:6187427      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6187427.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android高级控件一ListView绑定CheckBox实现全选增加和删除等功能.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Android高级控件一ListView绑定CheckBox实现全选增加和删除等功能.docx

1、Android高级控件一ListView绑定CheckBox实现全选增加和删除等功能Android高级控件(一)ListView绑定CheckBox实现全选,增加和删除等功能这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adapter的用法,加了很多的判断等等等等.我们先来看看实现的效果吧!好的,我们新建一个项目LvCheckBox我们事先先把这两个布局写好吧,一个是主布局,还有一个listview的item.xml,相信不用多说activity_main.xml item.xml item.xml只有两个控件,很好理解吧初始化控件我们用ini

2、tView()方法来初始化这些控件 private void initView() tv_add = (TextView) findViewById(R.id.tv_add); tv_add.setOnClickListener(this); btn_detele = (Button) findViewById(R.id.btn_detele); btn_detele.setOnClickListener(this); btn_select_all = (Button) findViewById(R.id.btn_select_all); btn_select_all.setOnClickLi

3、stener(this); listview = (ListView) findViewById(R.id.listview); 然后继承点击事件,button的和listview的implements OnClickListener,OnItemClickListener自定义Adapter这里最难的就是adapter了1.Bean我们为了数据的记录方便,我们提前写一个实体类package com.lgl.lvcheckbox;public class Bean private String title; / 构造方法 public Bean(String title) super(); t

4、his.title = title; public String getTitle() return title; public void setTitle(String title) this.title = title; ListAdapter这里所有的都写了注释,也方便大家看清package com.lgl.lvcheckbox;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.content.Context;impor

5、t android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.TextView;/* * 自定义适配器 * * autho

6、r LGL * */public class ListAdapter extends BaseAdapter / 数据集 private List list = new ArrayList(); / 上下文 private Context mContext; / 存储勾选框状态的map集合 private Map isCheck = new HashMap(); / 构造方法 public ListAdapter(Context mContext) super(); this.mContext = mContext; / 默认为不选中 initCheck(false); / 初始化map集合

7、public void initCheck(boolean flag) / map集合的数量和list的数量是一致的 for (int i = 0; i list.size(); i+) / 设置默认的显示 isCheck.put(i, flag); / 设置数据 public void setData(List data) this.list = data; / 添加数据 public void addData(Bean bean) / 下标 数据 list.add(0, bean); Override public int getCount() / TODO Auto-generated

8、method stub / 如果为null就返回一个0 return list != null ? list.size() : 0; Override public Object getItem(int position) / TODO Auto-generated method stub return list.get(position); Override public long getItemId(int position) / TODO Auto-generated method stub return position; Override public View getView(fi

9、nal int position, View convertView, ViewGroup parent) ViewHolder viewHolder = null; View view = null; / 判断是不是第一次进来 if (convertView = null) view = LayoutInflater.from(mContext).inflate(R.layout.item, null); viewHolder = new ViewHolder(); viewHolder.title = (TextView) view.findViewById(R.id.tvTitle);

10、viewHolder.cbCheckBox = (CheckBox) view .findViewById(R.id.cbCheckBox); / 标记,可以复用 view.setTag(viewHolder); else view = convertView; / 直接拿过来用 viewHolder = (ViewHolder) view.getTag(); / 拿到对象 Bean bean = list.get(position); / 填充数据 viewHolder.title.setText(bean.getTitle().toString(); / 勾选框的点击事件 viewHold

11、er.cbCheckBox .setOnCheckedChangeListener(new OnCheckedChangeListener() Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) / 用map集合保存 isCheck.put(position, isChecked); ); / 设置状态 if (isCheck.get(position) = null) isCheck.put(position, false); viewHolder.cbCheckBox.set

12、Checked(isCheck.get(position); return view; / 优化 public static class ViewHolder public TextView title; public CheckBox cbCheckBox; / 全选按钮获取状态 public Map getMap() / 返回状态 return isCheck; / 删除一个数据 public void removeData(int position) list.remove(position); 当然,有些方法是后面写的,我们提前写好,比如删除和增加什么的初始化数据我们默认总是需要点数据

13、的 private void initData() / 默认显示的数据 List list = new ArrayList(); list.add(new Bean(张三); list.add(new Bean(李四); list.add(new Bean(王五); adapter = new ListAdapter(this); adapter.setData(list); listview.setAdapter(adapter); 增加数据 / 添加数据 case R.id.tv_add: adapter.addData(new Bean(刘桂林); / 通知刷新适配器 adapter.n

14、otifyDataSetChanged(); break;全选数据当我们全选的时候,按钮应该为全不选的,所以这里我们这里有状态的 case R.id.btn_select_all: / 全选全不选 Map isCheck = adapter.getMap(); if (btn_select_all.getText().equals(全选) adapter.initCheck(true); / 通知刷新适配器 adapter.notifyDataSetChanged(); btn_select_all.setText(全不选); btn_select_all.setTextColor(Color

15、.YELLOW); else if (btn_select_all.getText().equals(全不选) adapter.initCheck(false); / 通知刷新适配器 adapter.notifyDataSetChanged(); btn_select_all.setText(全选); btn_select_all.setTextColor(Color.YELLOW); break;删除数据删除也是要考虑很多因素/ 删除数据 case R.id.btn_detele: / 拿到所有数据 Map isCheck_delete = adapter.getMap(); / 获取到条目

16、数量,map.size = list.size,所以 int count = adapter.getCount(); / 遍历 for (int i = 0; i count; i+) / 删除有两个map和list都要删除 ,计算方式 int position = i - (count - adapter.getCount(); / 判断状态 true为删除 if (isCheck_delete.get(i) != null & isCheck_delete.get(i) / listview删除数据 isCheck_delete.remove(i); adapter.removeData(

17、position); btn_select_all.setText(全选); btn_select_all.setTextColor(Color.WHITE); adapter.notifyDataSetChanged(); break;这里的int position = i - (count - adapter.getCount();是一个计算方式,当我们删除之后,实际上数组是需要重新排列的,同时按钮也要变回全选状态的listview的点击我们直接点击也是可以勾选cheakbox选中的/ listview的点击事件 Override public void onItemClick(AdapterView parent, View view, int position, long id) / 判断view是否相同 if (view.getTag() instanceof ViewHolder) / 如果是的话,重用 ViewHolder holder = (ViewHolder) view.getTag(); / 自动触发 holder.cbCheckBox.toggle(); 好的,这样的话就可以实现了。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1