Gridview 单选效果实现,且用且珍惜

  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的运行结果如下:

  

  

时间: 2024-08-30 03:57:28

Gridview 单选效果实现,且用且珍惜的相关文章

uiTableView 单选效果

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; NSArray* nsArryUITableViewCell=[tableView visibleCells]; //单选效果 for (UITableViewCell* uiTableViewC

chckbox 实现单选效果(html)

note:在html <input> 标签类中的checkbox实现单选效果. 在最近的开发项目中,客户要求使用小方格子实现“单选”功能,显然圆点的radio被out了,只能选择chckbox的方块样式,也在网上搜过,可能有点儿脑残,没有找到. 废话不多说直接上代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv

Gridview中实现RadioButton单选效果

HTML <asp:TemplateField ItemStyle-Width="22px"> <ItemTemplate> <asp:RadioButton ID="radButtonControl" GroupName="group1" runat="server" /> </ItemTemplate> </asp:TemplateField> CS protec

自定义View之GridView单选 金额选择Layout-ChooseMoneyLayout

思路: 外层控件用的是GridView,里面每个item放一个FrameLayout,FrameLayout里面有Checkbox和ImageView,chechBox添加background实现选中效果,选中背景为透明,显示item的勾勾图标,不选中checkbox就有背景,挡住选中的勾勾..重写GridView,实现监听和数据适配,用一个接口返回选中的数据. 代码: ChooseMoneyLayout.java public class ChooseMoneyLayout extends G

简单实现ToolStripMenuItem(菜单栏)的单选效果

来源:http://www.97world.com/archives/2194 这几天在写又拍云的客户端,老实说确实学到了不少东西!接下来的几天我会把一些技巧或者原来没有接触过的一些东西发上来,算是复习吧! 之前想要弄ToolStripMenuItem的单选菜单效果,本来想着要用到不短的一段if判断来实现,百度了一下发现了一个蛮不错的方法,如果菜单栏目多的话更能体现高效率. 首先我们需要定义一个方法: 帮助 1 2 3 4 5 6 7 8 private void SingleCheck(obj

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

以前我实现单选变色几乎都是用js实现的,今天看到有个css属性可以直接实现单选变色,很开心啊~ 话不多说看效果 实现的代码如下 使用tabIndex还可以实现别的有趣的效果 话不多说看效果 实现的代码如下 原文地址:https://www.cnblogs.com/smart-girl/p/9176920.html

多选框、单选效果

效果如下: 代码: <dl id="div_group"> <dt>会员组别</dt> <dd> <div class="rule-multi-porp"> <span id="cblGroupId"> <input id="cblGroupId_0" type="checkbox" name="cblGroupId$0

复选框做成单选效果

function zlClick($id){ var eles = document.getElementById($id).children; var srcEle = event.srcElement; for(var i=0;i<eles.length;i++){ if(srcEle.checked){ if(eles[i].value!=srcEle.value){ eles[i].checked=false; } } } } 技术领域 可信计算 其他    申请日 2000 2001

weui 弹框中的单选效果

<!--性别修改弹框--> <div class="weui_dialog_alert" id="doctorSexDialog" style="display: none;"> <div class="weui_mask"></div> <div class="weui_dialog"> <div class="weui_dial