单选的RecyclerView列表的Adapter

public class TwoSelectGroupBean {
    private String name;
    private boolean isShwo;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isShwo() {
        return isShwo;
    }

    public void setShwo(boolean shwo) {
        isShwo = shwo;
    }
}









public class TwoSelectTaskGroupAdapter extends BaseQuickAdapter<TwoSelectGroupBean> {
    private int position = -1;
    List<TwoSelectGroupBean> data;
    public TwoSelectTaskGroupAdapter(List<TwoSelectGroupBean> data) {
        super(R.layout.item_two_select_task_group,data);
        this.data = data;
    }

    @Override
    protected void convert(BaseViewHolder helper, TwoSelectGroupBean item) {
        boolean isShow = false;
        helper.setText(R.id.item_two_task_group_name,item.getName());
        ImageView img = (ImageView) helper.getConvertView().findViewById(R.id.item_two_task_group_img);
        ImageView del = (ImageView) helper.getConvertView().findViewById(R.id.item_two_task_group_del);
        RelativeLayout layout = (RelativeLayout) helper.getConvertView().findViewById(R.id.item_two_task_group_layout);
        if(item.isShwo()){
            img.setVisibility(View.VISIBLE);
        }else {
            img.setVisibility(View.GONE);
        }
        layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(position == -1){
                    LogUtil.e("执行了:position = -1");
                    for(int x = 0;x<data.size();x++) {
                        data.get(x).setShwo(false);
                    }
                    position = getViewHolderPosition(helper);
                    data.get(getViewHolderPosition(helper)).setShwo(true);
                    notifyDataSetChanged();
                }else if(position == getViewHolderPosition(helper)){
                    position = -1;
                    LogUtil.e("执行了:取消");
                    data.get(getViewHolderPosition(helper)).setShwo(false);
                    notifyDataSetChanged();
                }else if(position != getViewHolderPosition(helper)){
                    position = getViewHolderPosition(helper);
                    LogUtil.e("执行了:更改");
                    for(int x = 0;x<data.size();x++) {
                        data.get(x).setShwo(false);
                    }
                    data.get(getViewHolderPosition(helper)).setShwo(true);
                    notifyDataSetChanged();
                }

            }
        });
        del.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                data.remove(getViewHolderPosition(helper));
                notifyDataSetChanged();
            }
        });
    }

    /**侧拉删除条目中的点击事件*/
    private OnClickLayouListener clickLayouListener;
    public void setOnClickLayouListene(OnClickLayouListener clickLayouListener) {
        this.clickLayouListener = clickLayouListener;
    }
    public interface OnClickLayouListener {
        public void OnClickLayouListener(int position);
        public void OnClickLayouListener(View view,int position);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于在 Android 中实现 RecyclerView 单选功能,可以按照以下步骤进行操作: 1. 首先,你的 RecyclerView.Adapter 中,为每个数据项添加一个额外的标志来表示是否被选中。可以使用一个布尔类型的变量或者其他任何适合的方式。 2. 在 RecyclerView.ViewHolder 中,为列表项的根布局添加一个点击事件监听器,用于处理单击事件。 3. 在点击事件监听器中,更新当前列表项的选中状态,并刷新列表。 4. 在 onBindViewHolder() 方法中,根据每个列表项的选中状态来设置相应的样式或者显示效果。 下面是一个简单的示例代码: ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<Item> itemList; private int selectedItem = -1; public MyAdapter(List<Item> itemList) { this.itemList = itemList; } public class ViewHolder extends RecyclerView.ViewHolder { public TextView textView; public ViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.textView); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = getAdapterPosition(); if (position != RecyclerView.NO_POSITION) { selectedItem = position; notifyDataSetChanged(); } } }); } } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { Item item = itemList.get(position); holder.textView.setText(item.getText()); if (selectedItem == position) { holder.itemView.setBackgroundColor(Color.YELLOW); } else { holder.itemView.setBackgroundColor(Color.WHITE); } } @Override public int getItemCount() { return itemList.size(); } } ``` 在这个示例中,将列表项的选中状态存储在 `selectedItem` 变量中,点击列表项时更新该变量的值,并调用 `notifyDataSetChanged()` 方法刷新列表。在 `onBindViewHolder()` 方法中,根据选中状态设置相应的样式。 希望这个示例能帮到你!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值