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. Java并发之synchronized关键字
  2. 深入理解Golang 编程思维和工程实战
  3. P5709 【深基2.习6】Apples Prologue 苹果和虫子(python3实现)
  4. 开启自己的博客园,在学习成长的路上一路向前
  5. AJAX全套(JSONP、CORS)
  6. jQuery1.9+ 废弃的函数和方法 升级Jquery版本遇到的问题
  7. web前端基础(03html列表知识)
  8. PAT 1071. 小赌怡情(15)-PAT乙级真题
  9. ORA-00923: 未找到要求的 FROM 关键字
  10. js获取image中src属性的方法语句
  11. HTML5前端教程分享:JavaScript学习指南
  12. Allpairs正交工具的安装、使用及错误提示解决办法
  13. #pragma once用法总结
  14. ReactNative第三方组件库
  15. 淘宝618超级红包可以叠加使用吗?
  16. 免费在线pdf转换成word转换器
  17. esp32 io速度_Adafruit HUZZAH32-ESP32Feather的说明
  18. 最新v6.0 tgroupon分销系统源码+TGROUPON卖货系统 ECSHOP+ECTOUCH内核
  19. QRCode插件的使用(二维码识别与生成)
  20. 为什么宝宝做错事被骂哭后,还要求抱抱?家长早知道早受益

热门文章

  1. 【转载】ArrayList 中数据删除 fail fast
  2. iOS 开发-单元测试
  3. ASP.NET中的Cookie对象
  4. 深入分析FreeDos -- 前言
  5. Oracle 各种语法(一)
  6. 向域管理转型所遇到的问题
  7. php %3ch1%3e字体,phpWebSite搜索模块跨站脚本执行漏洞
  8. gitlab mr wip 怎么弄成_基于GitLab的工作流程设计
  9. JVM面试1 :谈谈你对Java的理解
  10. 如何避免核心代码资源泄漏和如何提高开发效率