当前位置:   article > 正文

RecyclerView 点击Item 改变背景色_recyclerview 给itemview点击的背景色

recyclerview 给itemview点击的背景色

项目中涉及到 RecyclerView item  的切换,需要改变选中的背景  ,本着不麻烦ui小姐姐的原则 自己实现

效果图:

基本思路是这样的:

Fragment或者Activity中做个标记currentPosition
在点击了Item的时候将position记录下来,并刷新适配器
然后在Adapter中设置回调监听,继承的BaseQuickAdapter,在convert()方法中设置回调监听
最后在Fragment或者Activity使用监听判断当前位置是否和传入的position是否一致
一致就设置选中的背景,不一致就要修改Item中的背景

具体实现:

Fragment或者Activity中:

  1. private int currentPosition = 0;
  2. mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
  3. @Override
  4. public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
  5. //这里赋值
  6. currentPosition = position;
  7. //每点击一次item就刷新适配器
  8. mAdapter.notifyDataSetChanged();
  9. }
  10. });
  11. mAdapter.setItemSelectedCallBack(new AmountInfoAdapter.ItemSelectedCallBack() {
  12. @Override
  13. public void convert(BaseViewHolder holder, int position) {
  14. //初始化组件
  15. ImageView bg = holder.getView(R.id.img_withdrawal_select);
  16. //判断传入的position是否和当前一致
  17. if (position == currentPosition) {
  18. bg.setBackgroundResource(R.mipmap.icon_wytx_xuanzhong);
  19. } else {
  20. bg.setBackgroundResource(R.drawable.profit_withdrawal_amount_shape);
  21. }
  22. }
  23. });

adapter中:

  1. @Override
  2. protected void convert(BaseViewHolder helper, AmountInfo item) {
  3. helper.setText(R.id.tv_withdrawal_amount, "¥" + item.getAmount());
  4. if (mCallBack != null) {
  5. mCallBack.convert(helper, helper.getLayoutPosition());
  6. }
  7. }
  8. public void setItemSelectedCallBack(ItemSelectedCallBack CallBack) {
  9. this.mCallBack = CallBack;
  10. }
  11. public interface ItemSelectedCallBack {
  12. void convert(BaseViewHolder holder, int position);
  13. }

总结: 同理可修改 文字颜色背景色等其他的设置  随意发挥

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/170862
推荐阅读
  

闽ICP备14008679号