GridView 点击多个item并且改变背景,再次点击还原.

2016-07-04  本文已影响0人  覃河钦

这个文章也许在很多人看来很简单,但是对一些新人来说还是有一点帮助的。笔者是一位应届毕业生。

首先上效果图:

笔者最开始是用textview 做为item 。在进行判断的时候可以改变背景和字体  ,但无法实习多个item的背景改变。最后使用Button写一个shape文件 ,selected为true的时候 solid填充颜色为蓝色  为false的时候是白色    设置每个position的监听的时候     当用户点击项的时候   isselected==false{  设为true  }  else  {    设为false}   这样你的shape 就会根据你的点击 去进行颜色的变化

作为item下面展示代码  首先是item格式:

背景颜色设置:

字体颜色设置:

在代码里面弄一个集合来添加被选中的标签  用户取消选择了 再把他移除

dmtextadapter=newDanmutextAdapter();

gv.setAdapter(dmtextadapter);

//除去默认的黄色背景

gv.setSelector(newColorDrawable(Color.TRANSPARENT));

gv.setOnItemClickListener(newAdapterView.OnItemClickListener() {

@Override

public voidonItemClick(AdapterView parent, View view,intposition,longid) {

LogUtil.d(">>>>>>>>>>>setOnItemClickListener>>>>>>>>>>>");

Button  button = (Button) view.findViewById(R.id.button_test);

if(button.isSelected()==false){

if(limit<4){//现在最多选4个

button.setSelected(true);

map.put(position,datas[position]);//添加

limit++;

LogUtil.d(">>>>>>>>>>>>>>>>>>.选中>>>>>>>>>>>>"+map.toString()+">>>>>>>limit>>>>>>>>>>"+limit);

}

}else{

button.setSelected(false);

//删除指定元素

Iterator> it =map.entrySet().iterator();

intkey =0;

while(it.hasNext())

{

key = it.next().getKey();

if(key == position)

{

it.remove();

}

}

limit--;

LogUtil.d(">>>>>>>>>>>>>>>>>>>>>>.取消>>>>>>>>>>>>>>>>>>>>"+map.toString()+">>>>>>>limit>>>>>>>>>>"+limit);

}

}

上一篇下一篇

猜你喜欢

热点阅读