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 -- ...
随机推荐
- 拍案惊奇!9款神奇的jQuery/CSS3经典插件
款非常给力的jQuery/CSS3经典插件,插件包括CSS3图片特效.jQuery动画菜单.jQuery时尚登录表单等,一起来看看这些jQuery插件. .CSS3图片重力感应特效 这是一款应用重力感 ...
- Android GUI之View事件处理
Android中的事件分为按键事件和触屏事件,本篇文章将分析View是如何处理Touch事件的.在View中定义了许多触屏事件,比如OnClick.OnLongClick等等,这些事件都是由一次To ...
- Linux Shell处理文本最常用的工具大盘点
导读 本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk:提供的例子和参数都是最常用和最为实 ...
- 在AE10.1环境下调试其他版本的程序
不同人的可能使用的开发环境不一样,使用SDK版本也不一样,比如用ArcEngine9.3开发的程序在ArcEngine10.1下就不能运行,需要重新调试,才能运行. 这里的例子程序是其他网友在ArcE ...
- Android Studio中安装Genymotion模拟器
Genymotion的安装: Genymotion无疑是目前最快最好用的模拟器.官网下载地址:https://www.genymotion.com/ 进到官网却找不到免费下载地址了,都需要money, ...
- 利用vbs设置Java环境变量
每次PC重装后,又要设定Java环境变量,向我这种不爱记得人,老是要去找设定内容 感觉设置环境变量还真是比较麻烦,我是希望可以做成点击一下就ok的,这样重装系统就不用那么麻烦了, 但是考虑到通用性,为 ...
- poj 2391 (Floyd+最大流+二分)
题意:有n块草地,一些奶牛在草地上吃草,草地间有m条路,一些草地上有避雨点,每个避雨点能容纳的奶牛是有限的,给出通过每条路的时间,问最少需要多少时间能让所有奶牛进入一个避雨点. 两个避雨点间可以相互到 ...
- Java EE HTML5 WebSocket 示例
http://www.oschina.net/translate/java-ee-html5-websocket-example?cmp HTML5给Web浏览器带来了全双工TCP连接websocke ...
- 算法笔记_181:历届试题 回文数字(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的.这样的数字叫做:回文数字. 本题要求你找 ...
- eclipse 导入tortoiseSVN检出项目,不显示svn信息(eclipse安装svn插件)
eclipse 导入tortoiseSVN检出项目,不显示svn信息(eclipse安装svn插件) CreateTime--2018年5月10日14:10:35 Author:Marydon 1 ...