Android:GridView中实现点击Item变色,再点击还原。
使用GridView时想实现点击其中的一个Item,该Item改变背景,再次点击Item变回原来的背景,网上搜了很多资料都没有看到类似的案例,但还是有所启发,现来分享我的做法。
首先,首先为GridView自定义adapter适配器,继承BaseAdapter类。
实现效果的重要因素如下,为item设置一个标记点击状态的数组。
public class gridAdapter extends BaseAdapter {
    final itemLength = 16;
    private LayoutInflater layoutInflater;
    private List<String> gridDataList = new ArrayList<>();
    private int clickTemp = -1;//标识被选择的item
    private int[] clickedList=new int[itemLength];//这个数组用来存放item的点击状态
    private  Context c;
    gridAdapter(Context context){
        c = context;
        layoutInflater = LayoutInflater.from(context);
        for (int i =0;i<itemLength;i++){
            clickedList[i]=0;      //初始化item点击状态的数组
        }
    }
            ----------
             以下代码省略
            ----------
}然后在定义的adapter中写一个方法,用于识别当前被选择的item
    public void setSeclection(int posiTion) {
        clickTemp = posiTion;
        }在setOnItemClickListener中.将点击的Item位置通过setSeclection( )传到adapter。
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                gridadapter.setSeclection(position);
                gridadapter.notifyDataSetChanged();
            }
        });接下来adapter中很重要的重载方法getView()。
   @Override
    public View getView(int position, View convertView, ViewGroup parent) {
//..................代码省略
if(clickTemp==position){    //根据点击的Item当前状态设置背景
            if (clickedList[position]==0){
                convertView.setBackgroundColor(Color.BLUE);
                clickedList[position]=1;
            }
            else {              convertView.setBackgroundColor(Color.TRANSPARENT);
                clickedList[position]=0;
            }
        }
//..................代码省略
    }提醒:不要忘了notifyDataSetChanged(),否则点击效果不会显示。 
在修改适配器绑定的数据后,利用notifyDataSetChanged()刷新Item。
Android:GridView中实现点击Item变色,再点击还原。的更多相关文章
- javascript点击变绿色再点击变红色
		<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
- checkbox点击选中,再点击取消,并显示在文本框中
		function checkItem(e,itemId) { var item = document.getElementById(itemId); var $items = $(item); if ... 
- jquery实现点击显示,再点击隐藏
		//点击a标签,轮流显示和隐藏<div id="timo" style="background-color:red;height:50px;width:50px;& ... 
- vue实现动态绑定class--(boolean)绑定class,点击有,再点击取消
		<template> <div :class="{'flag':selected}" @click=clickBtn>xxx</div>< ... 
- jq点击显示,再点击隐藏
		每次都会遇到的问题: <script> $("button").click(function(){ if($(".div").css("d ... 
- jquery  checkbox点击选中,再点击取消选中
		if(n==1){ if($("#abs1").is(':checked')){ $("#abs1").prop("checked",fal ... 
- Android GridView使用View.GONE只隐藏内容而不隐藏空间的解决方案
		最近在处理GridView的时候遇到这样一个问题:Android手机客户端接收服务端返回的一串数据(数据条数不固定),这串数据不一定都要显示到GridView上,也就是说有一部分内容需要隐藏掉,即有一 ... 
- Android——GridView(网格视图)相关知识总结贴
		Android API中文文档GridView http://www.apkbus.com/android-14131-1-1.html Android API 中文 (15) —— GridVi ... 
- Android Studio 中设置代码块自动补齐
		AS中很多提示键,并不如Eclipse中做的好,需要我们自己去自定义.这里以switch...case为例,讲解一下如何设置代码自动补全. 1.进入settings --> Editor -- ... 
随机推荐
- Composite 组合模式 树 递归 MD
			Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ... 
- IOS开发-提升app性能的25条建议和技巧
			前言 这篇文章介绍了作者开发工作中总结的25个iOS开发tips, 多年之前读过这篇文章.收益良多,基本每一个tips在我的应用开发过程中都使用过.今天把这篇文章又一次整理转发下,与大家一起学习,不论 ... 
- Leaf - 一个由 Go 语言编写的开发效率和执行效率并重的开源游戏服务器框架
			转自:https://toutiao.io/posts/0l7l7n/preview Leaf 游戏服务器框架简介 Leaf 是一个由 Go 语言(golang)编写的开发效率和执行效率并重的开源游戏 ... 
- 用vs2013开发node.js的addon.
			下载node.js的源代码. https://github.com/joyent/node 如果用svn下载,后面加上/trunk,以免把用不着的branches也下载下来,浪费时间. 安装V ... 
- 在Foreda上安装apache-tomcat-7.0.42.tar.gz
			开发环境JDK和Tomcat应该和部署环境一致,要不容易出现奇奇怪怪的问题.所以Aspire机器上的Tomcat要装一个新版本了. 装Tomcat基本等于一个解压和移动的过程,确实简单. 第一步:解压 ... 
- POJ--2449--Remmarguts' Date【dijkstra_heap+A*】第K短路
			链接:http://poj.org/problem?id=2449 题意:告诉你有n个顶点,m条边.并把这些边的信息告诉你:起点.终点.权值.再告诉你s.t.k.需求出s到t的第k短路,没有则输出-1 ... 
- Discuz常见大问题-如何DIY一个独立页面
			首先参考Discuz如何自定义单个页面的文章,确保你已经能做一个"关于我们"这种纯HTML静态页面(只有文字和静态图片描述).其次参考下面的文件修改原来的htm文件 注意我用红色标 ... 
- Power Network  (poj 1459 网络流)
			Language: Default Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 23407 ... 
- 微信小程序 - 反编译线上源码
			github地址:https://github.com/qwerty472123/wxappUnpacker 不过我好像从来未成功过哈,TX地图+.TX公交都失败了 点击下载以上两个文件 哦,对了,你 ... 
- pushlet单播与多播
			近期要弄一个消息推送的功能,在网上找了非常多的关于pushlet的文章,尽管写的都非常具体,可是本人看了以后却总认为是模棱两可···不知道怎样下手,终于參考了这些文章中的一些内容,并结合官网的源码.做 ... 
