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 -- ...
随机推荐
- Leaflet绘制热力图【转】
http://blog.csdn.net/giser_whu/article/details/51485871 时下用的最多的开源二维webgis引擎应该是openlayers与leaflet了,le ...
- SQL基础(五):SQL函数
一.SQL Aggregate 函数: SQL Aggregate 函数计算从列中取得的值,返回一个单一的值. 1.AVG() 函数 AVG() 函数返回数值列的平均值. 语法:SELECT AVG( ...
- Triangular numbers
http://codeforces.com/problemset/problem/47/A Triangular numbers time limit per test 2 seconds memor ...
- C#.NET常见问题(FAQ)-delegate委托链如何使用
委托链本质就是你把一堆要执行的东西放到一个list里面,当要触发一组事情的时候,就不需要一个一个写一遍了(比如厂里食堂开饭了,这个方法一执行,要让厨师A时间在食堂等候打饭,B类员工在某个时间排队打饭, ...
- poj1837--Balance(dp:天平问题)
Balance Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10773 Accepted: 6685 Descript ...
- Android之新建项目
最近开始接触Android,实践出真理,接下来实际创建Android应用程序. 1.启动Eclipse,依次选择 " File/New/Project... " 或 " ...
- iOS禁用系统休眠
[UIApplicationsharedApplication].idleTimeDisabled= YES
- 局域网连接打印机(Win10)
局域网支持交换机和WIFI环境下进行连接(要求连上打印机的电脑已开启) 1.首先打开控制面板 2.硬件和声音 3.高级打印机设置 4.找到要连接的打印机,通过浏览(R) 添加局域网某台机器上的打印机, ...
- acm2024
/** * C语言合法标识符 */ import java.util.*; public class acm2024 { public static void main(String[] args ...
- VB总结2——内部函数
VB中内部函数大概有120多个,但是对于我们来说常用的不多,对于那些不常用用的时候再查 常用的内部函数大体可以分为六类: 数学函数,随即函数,字符串函数,数据类型转换函数,日期时间函数,格式输出函数等 ...