1. 使用GridView时想实现点击其中的一个Item,该Item改变背景,再次点击Item变回原来的背景,网上搜了很多资料都没有看到类似的案例,但还是有所启发,现来分享我的做法。
  2. 首先,首先为GridView自定义adapter适配器,继承BaseAdapter类。

实现效果的重要因素如下,为item设置一个标记点击状态的数组。

  1. public class gridAdapter extends BaseAdapter {
  2. final itemLength = 16;
  3. private LayoutInflater layoutInflater;
  4. private List<String> gridDataList = new ArrayList<>();
  5. private int clickTemp = -1;//标识被选择的item
  6. private int[] clickedList=new int[itemLength];//这个数组用来存放item的点击状态
  7. private Context c;
  8. gridAdapter(Context context){
  9. c = context;
  10. layoutInflater = LayoutInflater.from(context);
  11. for (int i =0;i<itemLength;i++){
  12. clickedList[i]=0; //初始化item点击状态的数组
  13. }
  14. }
  15. ----------
  16. 以下代码省略
  17. ----------
  18. }

然后在定义的adapter中写一个方法,用于识别当前被选择的item

  1. public void setSeclection(int posiTion) {
  2. clickTemp = posiTion;
  3. }

在setOnItemClickListener中.将点击的Item位置通过setSeclection( )传到adapter。

  1. gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  2. @Override
  3. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  4. gridadapter.setSeclection(position);
  5. gridadapter.notifyDataSetChanged();
  6. }
  7. });

接下来adapter中很重要的重载方法getView()。

  1. @Override
  2. public View getView(int position, View convertView, ViewGroup parent) {
  3. //..................代码省略
  4. if(clickTemp==position){ //根据点击的Item当前状态设置背景
  5. if (clickedList[position]==0){
  6. convertView.setBackgroundColor(Color.BLUE);
  7. clickedList[position]=1;
  8. }
  9. else { convertView.setBackgroundColor(Color.TRANSPARENT);
  10. clickedList[position]=0;
  11. }
  12. }
  13. //..................代码省略
  14. }

提醒:不要忘了notifyDataSetChanged(),否则点击效果不会显示。 
在修改适配器绑定的数据后,利用notifyDataSetChanged()刷新Item。

 

Android:GridView中实现点击Item变色,再点击还原。的更多相关文章

  1. javascript点击变绿色再点击变红色

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. checkbox点击选中,再点击取消,并显示在文本框中

    function checkItem(e,itemId) { var item = document.getElementById(itemId); var $items = $(item); if ...

  3. jquery实现点击显示,再点击隐藏

    //点击a标签,轮流显示和隐藏<div id="timo" style="background-color:red;height:50px;width:50px;& ...

  4. vue实现动态绑定class--(boolean)绑定class,点击有,再点击取消

    <template> <div :class="{'flag':selected}" @click=clickBtn>xxx</div>< ...

  5. jq点击显示,再点击隐藏

    每次都会遇到的问题: <script> $("button").click(function(){ if($(".div").css("d ...

  6. jquery checkbox点击选中,再点击取消选中

    if(n==1){ if($("#abs1").is(':checked')){ $("#abs1").prop("checked",fal ...

  7. Android GridView使用View.GONE只隐藏内容而不隐藏空间的解决方案

    最近在处理GridView的时候遇到这样一个问题:Android手机客户端接收服务端返回的一串数据(数据条数不固定),这串数据不一定都要显示到GridView上,也就是说有一部分内容需要隐藏掉,即有一 ...

  8. Android——GridView(网格视图)相关知识总结贴

    Android API中文文档GridView http://www.apkbus.com/android-14131-1-1.html   Android API 中文 (15) —— GridVi ...

  9. Android Studio 中设置代码块自动补齐

    AS中很多提示键,并不如Eclipse中做的好,需要我们自己去自定义.这里以switch...case为例,讲解一下如何设置代码自动补全. 1.进入settings -->  Editor -- ...

随机推荐

  1. 拍案惊奇!9款神奇的jQuery/CSS3经典插件

    款非常给力的jQuery/CSS3经典插件,插件包括CSS3图片特效.jQuery动画菜单.jQuery时尚登录表单等,一起来看看这些jQuery插件. .CSS3图片重力感应特效 这是一款应用重力感 ...

  2. Android GUI之View事件处理

     Android中的事件分为按键事件和触屏事件,本篇文章将分析View是如何处理Touch事件的.在View中定义了许多触屏事件,比如OnClick.OnLongClick等等,这些事件都是由一次To ...

  3. Linux Shell处理文本最常用的工具大盘点

    导读 本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk:提供的例子和参数都是最常用和最为实 ...

  4. 在AE10.1环境下调试其他版本的程序

    不同人的可能使用的开发环境不一样,使用SDK版本也不一样,比如用ArcEngine9.3开发的程序在ArcEngine10.1下就不能运行,需要重新调试,才能运行. 这里的例子程序是其他网友在ArcE ...

  5. Android Studio中安装Genymotion模拟器

    Genymotion的安装: Genymotion无疑是目前最快最好用的模拟器.官网下载地址:https://www.genymotion.com/ 进到官网却找不到免费下载地址了,都需要money, ...

  6. 利用vbs设置Java环境变量

    每次PC重装后,又要设定Java环境变量,向我这种不爱记得人,老是要去找设定内容 感觉设置环境变量还真是比较麻烦,我是希望可以做成点击一下就ok的,这样重装系统就不用那么麻烦了, 但是考虑到通用性,为 ...

  7. poj 2391 (Floyd+最大流+二分)

    题意:有n块草地,一些奶牛在草地上吃草,草地间有m条路,一些草地上有避雨点,每个避雨点能容纳的奶牛是有限的,给出通过每条路的时间,问最少需要多少时间能让所有奶牛进入一个避雨点. 两个避雨点间可以相互到 ...

  8. Java EE HTML5 WebSocket 示例

    http://www.oschina.net/translate/java-ee-html5-websocket-example?cmp HTML5给Web浏览器带来了全双工TCP连接websocke ...

  9. 算法笔记_181:历届试题 回文数字(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的.这样的数字叫做:回文数字. 本题要求你找 ...

  10. eclipse 导入tortoiseSVN检出项目,不显示svn信息(eclipse安装svn插件)

      eclipse 导入tortoiseSVN检出项目,不显示svn信息(eclipse安装svn插件) CreateTime--2018年5月10日14:10:35 Author:Marydon 1 ...