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

 2023-09-16 阅读 14 评论 0

摘要:  Gridview 单选效果,在androidapp中实现非常频繁,我这里提供我的一种思路,这是我的思维导图:      怎么样将这样的思维导图翻译成java代码了,请看下面的代码了:    // 电子产品的图片列表信息static class ConfigInfo {st

  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;}

  通过这么篇幅代码,我们可以得出来这样的结论:

datagridview选中一行?  Ⅰ用了两个实体类存储图片的实体的信息,一个布尔数组来存储是否选中的结果。

  Ⅱ点击了相应的某项以后,使其该布尔数组所对应的布尔变量变成相应的非值。

  这样的gridview的运行结果如下:

  

  

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/65503.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息