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. C# 高级编程9 介绍篇

    对等网络 在日常软件环境中,解决了以下问题: 不断增加的客户端通讯负载放在服务器上,服务器必须与每个客户端进行通讯,导致站点崩溃.大流量消耗.服务器无法响应等问题. 因此产生了P2B网络技术. 使用P ...

  2. ibatis的缓存机制

    Cache        在特定硬件基础上(同时假设系统不存在设计上的缺漏和糟糕低效的SQL 语句)Cache往往是提升系统性能的最关键因素).        相对Hibernate 等封装较为严密的 ...

  3. SIMATIC PID温度控制

    SIMATIC PID温度控制 // VAR_INPUT ------------------------------------------------------------------- #if ...

  4. 利用kettle组件导入excel文件到数据库

    利用kettle组件导入excel文件到数据库 1.     实现目标 把excel文件内容导入到目标表中:然后用java调用kettle的转换.excel文件的内容仅仅有两列,示比例如以下: wat ...

  5. hdu 4643 GSM 计算几何 - 点线关系

    /* hdu 4643 GSM 计算几何 - 点线关系 N个城市,任意两个城市之间都有沿他们之间直线的铁路 M个基站 问从城市A到城市B需要切换几次基站 当从基站a切换到基站b时,切换的地点就是ab的 ...

  6. ASP.NET MVC与Sql Server交互, 插入数据

    在"ASP.NET MVC与Sql Server建立连接"中,与Sql Server建立了连接.本篇实践向Sql Server中插入数据. 在数据库帮助类中增加插入数据的方法. p ...

  7. Android Service总结01 目录

    Android Service总结01 目录 1 Android Service总结01 目录 2 Android Service总结02 service介绍 介绍了“4种service 以及 它们的 ...

  8. java程序员必知的8大排序

    先来看看8种排序之间的关系: 1,  直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 ...

  9. 给hmailserver添加SSL支持

    我们使用stunnel来给hmailserver添加ssl支持,stunnel是一个开源跨平台提供全局TLS/SSL支持的软件,它可以给很多本身不支持ssl的软件来提供安全的加密连接,同样可以用于hm ...

  10. Android之针对webview的缓存

    import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...