Gridview 单选效果实现,且用且珍惜
Gridview 单选效果,在androidapp中实现非常频繁,我这里提供我的一种思路,这是我的思维导图:
怎么样将这样的思维导图翻译成java代码了,请看下面的代码了:
// 电子产品的图片列表信息static class ConfigInfo {static final int[] img = { R.drawable.electron_dvdplay,R.drawable.electron_toudaishishexianji,R.drawable.electron_miniyinxiang,R.drawable.electron_weidan_camera };}static class ConfigInfos{static final int[] imgs = { R.drawable.electron_dedplat_select,R.drawable.electron_toudaishishexiangji_select,R.drawable.electron_miniyinxiang,R.drawable.electron_weidan_select }; }// GridView 设配数据class Gridadapter extends BaseAdapter {List<Electronic> listbean;Context context;private int lastPosition = -1; // 记录上一次选中的图片位置,-1表示未选中任何图片private boolean multiChoose; // 表示当前适配器是否允许多选private List<Boolean> mImage_bs = new ArrayList<Boolean>(); // 定义一个向量作为选中与否容器private List<Integer> mSelectItems = new ArrayList<Integer>();public Gridadapter(Context context, List<Electronic> listbean,Boolean isMulti) {this.context = context;this.listbean = listbean;multiChoose = isMulti;for (int i = 0; i < listbean.size(); i++)mImage_bs.add(false);}//// private LayerDrawable makeBmp(Electronic id, boolean isChosen) {// Bitmap mainBmp = ((BitmapDrawable) context.getResources()// .getDrawable(id.getIcon())).getBitmap();//// // 根据isChosen来选取对勾的图片// Bitmap seletedBmp;// if (isChosen == true)// seletedBmp = BitmapFactory.decodeResource(// context.getResources(), R.drawable.gridview_chech_bg1);// else// seletedBmp = BitmapFactory.decodeResource(// context.getResources(),// R.drawable.electron_shuma_camera);//// // 产生叠加图// Drawable[] array = new Drawable[2];// array[0] = new BitmapDrawable(mainBmp);// array[1] = new BitmapDrawable(seletedBmp);// LayerDrawable la = new LayerDrawable(array);// la.setLayerInset(50, 50, 50, 50, 50);// la.setLayerInset(1, 10, -5, 60, 45);//// return la; // 返回叠加后的图// }// public void changeState(int position) {// // 多选时// if (multiChoose == true) {// mImage_bs// .setElementAt(!mImage_bs.elementAt(position), position); // 直接取反即可// }// // 单选时// else {// if (lastPosition != -1)// mImage_bs.setElementAt(false, lastPosition); // 取消上一次的选中状态// mImage_bs// .setElementAt(!mImage_bs.elementAt(position), position); // 直接取反即可// lastPosition = position; // 记录本次选中的位置// }// notifyDataSetChanged(); // 通知适配器进行更新// } @Overridepublic int getCount() {return listbean.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn listbean.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(final int position, View convertView,ViewGroup parent) {final Handle handle;if (convertView == null) {convertView = LayoutInflater.from(context).inflate(R.layout.grivview_textview_img, null);handle = new Handle();handle.imageView = (ImageView) convertView.findViewById(R.id.Grid_image);handle.tv = (TextView) convertView.findViewById(R.id.grid_tv);convertView.setTag(handle);} else {handle = (Handle) convertView.getTag();}// 设置数据// handle.imageView.setBackgroundResource(listbean.get(position)// .getIcon());int resId = mImage_bs.get(position) ? ConfigInfos.imgs[position]: ConfigInfo.img[position];handle.imageView.setImageResource(resId);// handle.imageView.setBackgroundDrawable(makeBmp(// listbean.get(position), mImage_bs.get(position)));handle.imageView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Log.v("图片中的项目", "你点击了按钮" + listbean.get(position)+ position);boolean selected=mImage_bs.get(position);mImage_bs.set(position, !selected); notifyDataSetChanged();}});return convertView;}
通过这么篇幅代码,我们可以得出来这样的结论:
Ⅰ用了两个实体类存储图片的实体的信息,一个布尔数组来存储是否选中的结果。
Ⅱ点击了相应的某项以后,使其该布尔数组所对应的布尔变量变成相应的非值。
这样的gridview的运行结果如下:
Gridview 单选效果实现,且用且珍惜相关推荐
- html 单选打勾效果,checkbox 实现单选效果(html)
note:在html 标签类中的checkbox实现单选效果. 在最近的开发项目中,客户要求使用小方格子实现"单选"功能,显然圆点的radio被out了,只能选择chckbox的方 ...
- 多选框实现单选效果,并且把中文值赋值到特定输入框
//多选框实现单选效果,并且把中文值赋值到特定输入框 function radioCheckBox(obj) {var checkBoxAll = document.getElementsByName ...
- 【MFC】工具栏按钮单选效果
00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 Visual C++在 ...
- 实现复选框的单选效果
<!DOCTYPE> <html> <head> <title>实现复选框的单选效果</title> </head> <b ...
- Vue el-tree实现单选效果
场景: 今天在做项目的时候,前端业务数据设计到树形展示,并需要单选,打开Element,选中 el-tree 组件,但官方文档中只支持多选,并不支持单选,需要对当前组件进行一定的拓展,以达到满足我们项 ...
- Axure9中使用中继器实现单选效果
本文主要告诉大家如何在Axure9中使用中继器实现列表的快速创建并且实现单选效果. 1.创建中继器 在空白页面中拖入中继器, 双击中继器,进入到中继器的编辑页面,状态如下: 创建布局,根据需要拖入需要 ...
- php实现单选和多选功能,input:checkbox多选框实现单选效果跟radio一样
最近遇到一个小小的问题,就是有时候我们使用单选radio的时候,会发现当我们选中一个之后,再也无法一个都不选了,即选中后没有取消的功能,此时便想到了功能强大的checkbox,但他是多选,怎么才能让他 ...
- axure rp9单选按钮实现单选效果
使用axure rp9画的单选按钮,默认不会实现单选的效果,要通过一些设置才能实现单选的效果,如下图所示: 具体设置如下: 1.先准备至少两个单选按钮,按住shift鼠标将单选按钮全部选中,然后鼠标右 ...
- bootstrap 按钮样式单选效果_【自学C#】I 书 101 单选按钮
一.简介 当需要用户在多个选项中选择一项时,可以使用单选按钮. 单选按钮处于被选中状态时,其左边圆圈中心有一黑点. 单选按钮通常以选项组的形式存在,在由若干单选按钮组成的选项组中,每次只能选中其中一个 ...
最新文章
- 深度干货!如何将深度学习训练性能提升数倍?
- UNITY技巧-查找脚本被哪个场景引用
- matlab ga rbf,GA PSO优化的RBF神经网络
- 机器学习之五:神经网络、反向传播算法推导
- strcpy与strdup
- LeetCode 91. 解码方法(动态规划)
- Android 第三方
- MYSQL 5.1自动安装脚本
- 【C#】隐式类型var
- ajax 限制显示条数,jquery通过ajax获取数据,控制显示的数据条数
- android listview 行高度自适应,Android ListView 长度自适应item的内容 计算listview的高度...
- SQL 从入门到精通
- Kotlin 中的 Unit
- 开源 免费 java CMS - FreeCMS2.8 会员头像设置
- 家具力学性能测试软件,家具力学性能
- 极限思想在计算机中的应用,高等数学中极限思想的应用
- android十大开源项目
- 帝国CMS(EmpireCMS) v7.5配置文件写入漏洞分析
- 中国证券金融股份有限公司的成立加速融资融券的发展
- plsql无法连接linux下的oracle服务器,提示:ora-12541:TNS 无监听程序