美文网首页
GridView 点击多个item并且改变背景,再次点击还原.

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

作者: 覃河钦 | 来源:发表于2016-07-04 12:01 被阅读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);

    }

    }

    相关文章

      网友评论

          本文标题:GridView 点击多个item并且改变背景,再次点击还原.

          本文链接:https://www.haomeiwen.com/subject/mogmdttx.html