ListVIew、GridView列表点击切换背景 + 设置第一项默认为点击效果

项目背景:支付时选择金额,点击切换当前按钮颜色、字体等


      activity中item的点击事件,利用点击item返回的view作为参考,每次点击将前一次点击的view设置成默认样式,再将该次点击的样式设置为新的样式即可

    int Position = -1;
    View OldView = null;
    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                  if (OldView == null){
                      OldView = view;
                      ChangeNewView(view , true);
                 }else{
                      ChangeNewView(OldView , false);
                      ChangeNewView(view , true);
                      OldView = view;
                 }
                Position = position;  //记录点击条目,作为变量做其他操作
            }
        });
    private void ChangeNewView(View view , Boolean isNew){

        TextView tv = (TextView) view.findViewById(R.id.recharge_item_tv_1);
        TextView tv2 = (TextView) view.findViewById(R.id.recharge_item_tv_2);
        if (isNew) {
            view.findViewById(R.id.recharge_ll).setBackgroundResource(R.drawable.shape);  //修改样式,自定义文件设置
            tv.setTextColor(getResources().getColor(R.color.white));
            tv2.setTextColor(getResources().getColor(R.color.white));
        }else{
            view.findViewById(R.id.recharge_ll).setBackgroundResource(R.drawable.shape2);  //修改样式,自定义文件设置
            tv.setTextColor(getResources().getColor(R.color.text_gary));
            tv2.setTextColor(getResources().getColor(R.color.text_gary));
        }
    }

         以上是其中一种方式,只修改特定的两个view样式


         第二种点击更改的方式,现在需求为默认选中一条作为默认选项

    private int defItem;//声明默认选中的项
    /**
     适配器中添加这个方法
     默认选中项
     */
    public void setDefSelect(int position) {
        this.defItem = position;
        notifyDataSetChanged();
    }
         
    //在getView方法中添加修改item样式的判断
    if (defItem == position){
            viewHolder.recharge_ll.setBackgroundResource(R.drawable.shape);
            viewHolder.recharge_item_tv_1.setTextColor(context.getResources().getColor(R.color.white));
            viewHolder.recharge_item_tv_2.setTextColor(context.getResources().getColor(R.color.white));
    }else{
            view.findViewById(R.id.recharge_item_ll).setBackgroundResource(R.drawable.shape2);
            viewHolder.recharge_item_tv_1.setTextColor(context.getResources().getColor(R.color.text_gary));
            viewHolder.recharge_item_tv_2.setTextColor(context.getResources().getColor(R.color.text_gary));
    }

         在activity中的使用,直接调用 adapter.setDefSelect(0) //设置默认选中第一项 

    listview.setAdapter(adapter);
    adapter.setDefSelect(0);//设置默认选中第一项
    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                adapter.setDefSelect(position);//更改选中项
                Position = position; //当默认为第一条时,设置默认Position = 0 即可
            }
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值