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. BZOJ.1576.[Usaco2009 Jan]安全路经Travel(树形DP 并查集)

    题目链接 BZOJ 洛谷 先求最短路树.考虑每一条非树边(u,v,len),设w=LCA(u,v),这条边会对w->v上的点x(x!=w)有dis[u]+dis[v]-dis[x]+len的距离 ...

  2. 【并查集】BZOJ4551-[Tjoi2016&Heoi2016]树

    NOIP太可怕了((( -口-) 题目链接 [题目大意] 给定一颗有根树(根为1),有以下两种操作: 1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结点均无标记,而且对于某个结点 ...

  3. 闲话函数式变成与OOP

    函数式编程扫盲篇 推薦參考文獻地址:http://byvoid.github.io/slides/apio-fp/index.html 1. 概论 在过去的近十年的时间里,面向对象编程大行其道.以至于 ...

  4. 【10.31校内测试】【组合数学】【记忆化搜索/DP】【多起点多终点二进制拆位Spfa】

    Solution 注意取模!!! Code #include<bits/stdc++.h> #define mod 1000000007 #define LL long long usin ...

  5. 如何使用windows云服务器搭建IIs、windows服务

    如何使用windows云服务器搭建IIs.windows服务,以下针对腾讯云服务器进行说明 1.购买云服务器之后,第1步需要设置的是,找到重装系统.重置密码等处. 2.设置安全组,设置完安全组之后才能 ...

  6. 导入导出CSV

    const string dataPath = @"D:\Users\jin_h\Documents\Visual Studio 2013\Projects\ConsoleApplicati ...

  7. JTAG – A technical overview and Timing

    This document provides you with interesting background information about the technology that underpi ...

  8. Android Service总结03 之被启动的服务 -- Started Service

    Android Service总结03 之被启动的服务 -- Started Service 版本 版本说明 发布时间 发布人 V1.0 添加了Service的介绍和示例 2013-03-17 Sky ...

  9. 漏洞风险评估:CVSS介绍及计算

    CVSS 通用弱点评价体系(CVSS)是由NIAC开发.FIRST维护的一个开放并且能够被产品厂商免费采用的标准.利用该标准,可以对弱点进行评分,进而帮助我们判断修复不同弱点的优先等级. CVSS : ...

  10. 无线通信中FEC 编码原理及评价

    转自:http://blog.csdn.net/wiznet2012/article/details/7492146 大家好,前面我们给大家介绍了无线通信中FEC编码原理(1)和(2),今天继续献上F ...