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 单选效果实现,且用且珍惜相关推荐

  1. html 单选打勾效果,checkbox 实现单选效果(html)

    note:在html 标签类中的checkbox实现单选效果. 在最近的开发项目中,客户要求使用小方格子实现"单选"功能,显然圆点的radio被out了,只能选择chckbox的方 ...

  2. 多选框实现单选效果,并且把中文值赋值到特定输入框

    //多选框实现单选效果,并且把中文值赋值到特定输入框 function radioCheckBox(obj) {var checkBoxAll = document.getElementsByName ...

  3. 【MFC】工具栏按钮单选效果

    00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 Visual C++在 ...

  4. 实现复选框的单选效果

    <!DOCTYPE> <html> <head> <title>实现复选框的单选效果</title> </head> <b ...

  5. Vue el-tree实现单选效果

    场景: 今天在做项目的时候,前端业务数据设计到树形展示,并需要单选,打开Element,选中 el-tree 组件,但官方文档中只支持多选,并不支持单选,需要对当前组件进行一定的拓展,以达到满足我们项 ...

  6. Axure9中使用中继器实现单选效果

    本文主要告诉大家如何在Axure9中使用中继器实现列表的快速创建并且实现单选效果. 1.创建中继器 在空白页面中拖入中继器, 双击中继器,进入到中继器的编辑页面,状态如下: 创建布局,根据需要拖入需要 ...

  7. php实现单选和多选功能,input:checkbox多选框实现单选效果跟radio一样

    最近遇到一个小小的问题,就是有时候我们使用单选radio的时候,会发现当我们选中一个之后,再也无法一个都不选了,即选中后没有取消的功能,此时便想到了功能强大的checkbox,但他是多选,怎么才能让他 ...

  8. axure rp9单选按钮实现单选效果

    使用axure rp9画的单选按钮,默认不会实现单选的效果,要通过一些设置才能实现单选的效果,如下图所示: 具体设置如下: 1.先准备至少两个单选按钮,按住shift鼠标将单选按钮全部选中,然后鼠标右 ...

  9. bootstrap 按钮样式单选效果_【自学C#】I 书 101 单选按钮

    一.简介 当需要用户在多个选项中选择一项时,可以使用单选按钮. 单选按钮处于被选中状态时,其左边圆圈中心有一黑点. 单选按钮通常以选项组的形式存在,在由若干单选按钮组成的选项组中,每次只能选中其中一个 ...

最新文章

  1. 深度干货!如何将深度学习训练性能提升数倍?
  2. UNITY技巧-查找脚本被哪个场景引用
  3. matlab ga rbf,GA PSO优化的RBF神经网络
  4. 机器学习之五:神经网络、反向传播算法推导
  5. strcpy与strdup
  6. LeetCode 91. 解码方法(动态规划)
  7. Android 第三方
  8. MYSQL 5.1自动安装脚本
  9. 【C#】隐式类型var
  10. ajax 限制显示条数,jquery通过ajax获取数据,控制显示的数据条数
  11. android listview 行高度自适应,Android ListView 长度自适应item的内容 计算listview的高度...
  12. SQL 从入门到精通
  13. Kotlin 中的 Unit
  14. 开源 免费 java CMS - FreeCMS2.8 会员头像设置
  15. 家具力学性能测试软件,家具力学性能
  16. 极限思想在计算机中的应用,高等数学中极限思想的应用
  17. android十大开源项目
  18. 帝国CMS(EmpireCMS) v7.5配置文件写入漏洞分析
  19. 中国证券金融股份有限公司的成立加速融资融券的发展
  20. plsql无法连接linux下的oracle服务器,提示:ora-12541:TNS 无监听程序

热门文章

  1. ASP.NET MVC中,通用的异常处理
  2. osip2 代码分析
  3. Word2013中制作按钮控件
  4. 2008年小结,我想,我就从这里开始
  5. LeetCode 59. 螺旋矩阵 II
  6. shell脚本手动执行成功,定时任务调用失败的解决方法。
  7. 威纶通定时循环操作宏_威纶通触摸屏宏指令的使用
  8. 写代码抽取代码的技巧
  9. 图解Java多线程设计模式
  10. singleflight包原理解析