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(); // 通知适配器进行更新
// } @Override
public int getCount() {
return listbean.size(); } @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return listbean.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public 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() {
@Override
public 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. 利用GridView实现单选效果

    1.实现如图所示的单选效果 由于Android提供的单选按钮radiobutton只能单行或单列显示,且样式并不美观,故可用GridView进行改造,实现单选效果,而要实现这样的效果重点就在GridV ...

  2. ios UIButton设置单选效果,以及同时设置图片和标题

    一,设置单选效果 - (void)selectedBtnPress:(UIButton*)sender { //首先把原来按钮的选中效果消除 for (int i=0;i<num;i++) {/ ...

  3. GridView拖动效果实现

    GridView拖动效果实现 1.    重新GridView控件 package com.whbs.drag.widget; import com.whbs.drag.DragGridActivit ...

  4. checkbox 实现单选效果(html)

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

  5. ViewPagerWithViewDemo【ViewPager和View搭配以及演示获取里面的值和CheckBox单选效果】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 简单记录下ViewPager和自定义布局view的搭配使用以及布局文件中单选效果.获取viewpager布局内部值的功能. 效果图 ...

  6. ios开发之--多个按钮单选效果

    开发项目时,有很多场景需要用到按钮单选效果,例如充值页面,选择标签页面等,具体实现代码如下: 1,创建 -(UIView *)headerView { CGFloat width = (Kscreen ...

  7. [转]Gridview中实现RadioButton单选效果

    HTML <asp:TemplateField ItemStyle-Width="22px"> <ItemTemplate> <asp:RadioBu ...

  8. css实现单选效果,看看有趣的tabIndex

    以前我实现单选变色几乎都是用js实现的,今天看到有个css属性可以直接实现单选变色,很开心啊~ 话不多说看效果 实现的代码如下 下面我们看看用focus实现别的有趣的效果 话不多说看效果 实现的代码如 ...

  9. element-ui Table表格结合CheckBox实现单选效果

    最近做项目遇到一个需求,需要实现一个表格的单选,由于项目使用的是element-ui.于是去看了表格的文档,确实有单选的方法,但是官方的单选是直接选中表格行,通过颜色来区分 看着效果不明显,实际需要一 ...

随机推荐

  1. ZOJ.3551.Bloodsucker(期望DP)

    题目链接 \(Description\) 有1个吸血鬼和n-1个人,每天有且只会有两个人/吸血鬼相遇,如果是人与吸血鬼相遇,那个人会有p的概率变成吸血鬼:否则什么也不发生.求n个都变成吸血鬼的期望天数 ...

  2. 20172330 2017-2018-1 《Java程序设计》第六周学习总结

    学号 2017-2018-2 <程序设计与数据结构>第六周学习总结 教材学习内容总结 这一章主要是对数组的学习: 数组是一种简单而功能强大的编程语言结构,用于分组和组织数据.在java中, ...

  3. 负载均衡介绍及Nginx简单实现

    负载均衡介绍及Nginx简单实现 负载均衡 负载均衡介绍及Nginx简单实现 1. 介绍 2. 常用的开源软件 2.1 LVS 优点 缺点 2.2 Nginx 优点 缺点 3. 常用的开源反向代理软件 ...

  4. Xtreme8.0 - Back to Square 1 数学

    Back to Square 1 题目连接: https://www.hackerrank.com/contests/ieeextreme-challenges/challenges/back-to- ...

  5. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) D. Dense Subsequence 暴力

    D. Dense Subsequence 题目连接: http://codeforces.com/contest/724/problem/D Description You are given a s ...

  6. jquery json 格式教程

    介绍 我们知道AJAX技术能够使得每一次请求更加迅捷,对于每一次请求返回的不是整个页面,也仅仅是所需要返回的数据.通常AJAX通过返回XML格式的数据,然后再通过客户端复杂的JavaScript脚本解 ...

  7. STM32F1XX devices vector table for EWARM toolchain.

    ;******************** (C) COPYRIGHT 2014 STMicroelectronics ******************* ;* File Name : start ...

  8. Embarcadero RAD Studio XE5

    英巴卡迪诺 RAD Studio XE是终极应用程序开发套件,能以最快速方式为Windows.Mac OS X. .NET. PHP. Web和移动设备可视化开发数据丰富.界面美观的跨平台应用程序.R ...

  9. 基于开源SuperSocket实现客户端和服务端通信项目实战

    一.课程介绍 本期带给大家分享的是基于SuperSocket的项目实战,阿笨在实际工作中遇到的真实业务场景,请跟随阿笨的视角去如何实现打通B/S与C/S网络通讯,如果您对本期的<基于开源Supe ...

  10. CLR如何加载程序集以及程序集版本策略

    在项目的配置文件Web.config中,会看到<runtime>节点,以及包含在其中的<assemblyBinding>节点,这显然与程序集有关,这些节点到底何时被用到呢? 在 ...