Androd TextView 点击变化效果

这里写图片描述

这里写图片描述

思路:
1.先自定义一个View
2.判断TextView是否点击,这个时候需要一个Type来标识

先看下自定义View

public class BottonSelectLayout extends LinearLayout {

    private ArrayList<BottonItem> bottonItems = getResource();
    private GridView mGridview;
    private BottonItem bottonItem;
    private MlayoutAdapter adapter;
    private mlayoutClickListener mListener;

    public interface mlayoutClickListener {
        public void onItemClick(BottonItem mEntity);
    }

    public void setMLayoutClickListener(mlayoutClickListener listener) {
        mListener = listener;
    }

    private void init() {
        if (isInEditMode())
            return;

        View view = LayoutInflater.from(getContext()).inflate(R.layout.gv, this);
        mGridview = (GridView) view.findViewById(R.id.gridView);
        adapter = new MlayoutAdapter();
        mGridview.setAdapter(adapter);
        mGridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if (bottonItem != null) {
                    bottonItem.setType("false");
                }
                bottonItem = bottonItems.get(position);
                bottonItem.setType("true");
                adapter.notifyDataSetChanged();
                if (mListener != null) {
                    mListener.onItemClick(bottonItem);
                }
            }
        });
    }

    public BottonSelectLayout(Context context) {
        super(context);
        init();
    }

    public BottonSelectLayout(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public BottonSelectLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    public class MlayoutAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            return bottonItems.size();
        }

        @Override
        public BottonItem getItem(int position) {
            return bottonItems.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = null;
            if (convertView == null) {
                convertView = LayoutInflater.from(getContext()).inflate(R.layout.layout_botton_select, null);
                holder = new ViewHolder();
                holder.textView = (TextView) convertView.findViewById(R.id.textview);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            BottonItem entity = getItem(position);
            holder.textView.setText(entity.getName());
            //判断textview是否被点击,true点击,false没点击
            if ("true".equals(entity.getType())) {
                holder.textView.setBackgroundColor(getResources().getColor(R.color.white));
                holder.textView.setTextColor(getResources().getColor(R.color.f45d5d));
            } else {
                holder.textView.setBackgroundColor(getResources().getColor(R.color.c4));
                holder.textView.setTextColor(getResources().getColor(R.color.white));

            }
            return convertView;
        }

        class ViewHolder {
            TextView textView;
        }

    }
    //如果是后台返回的数据可以在这里接入
    public ArrayList<BottonItem> getResource() {
        ArrayList<BottonItem> list = new ArrayList<BottonItem>();
        BottonItem entity = new BottonItem("红烧鱼");
        entity.setType("false");
        list.add(entity);

        BottonItem entity1 = new BottonItem("三文鱼");
        entity1.setType("false");
        list.add(entity1);

        BottonItem entity2 = new BottonItem("鲤鱼");
        entity1.setType("false");
        list.add(entity2);
        return list;
    }
}
public class BottonItem  implements Serializable {

    private String Type;//判断是否点击
    private String name;

    public BottonItem(String name) {
        this.name = name;
    }

    public String getType() {
        return Type;
    }

    public void setType(String type) {
        Type = type;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值