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。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM