RecyclerView实现单选模式

今天项目中遇到列表单选,因为一直对RecyclerView情有独钟,所以打算也用这个控件写,下面是具体实现


RadioButton的样式请参考我的另一个博客 自定义RadioButton样式

xml中设置比较简单, 这里就不贴上代码了。

adapter 实现如下:

import com.goucai.user.R;
import com.goucai.user.recyclerview.BaseQuickAdapter;
import com.goucai.user.recyclerview.BaseViewHolder;

import java.util.List;
public class ReasonAdapter extends BaseQuickAdapter<String> {
    private BaseViewHolder holder;
    private int selPosition=0;
    public ReasonAdapter(int layoutResId, List<String> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, String item, int position) {
        holder=helper;
        helper.setText(R.id.item_reason_tips,item);
        if (selPosition==position)
        {
            helper.setChecked(R.id.item_reason_radio_btn,true);
        }else
        {
            helper.setChecked(R.id.item_reason_radio_btn,false);
        }
    }
    public BaseViewHolder getBaseViewHolder()
    {
       return  holder;
    }

    public   void setItemSel(int selPosition)
    {
        this.selPosition=selPosition;
        notifyDataSetChanged();
    }
}
这里我继承的BaseQuickAdapter 具体使用方式请才能考[BaseQuickAdapter](http://www.jianshu.com/p/e730462138bd?nomobile=yes) 这个adapter 中写了一个setItemSel方法,用来传如选择的item位置 然后再convert 方法中使用判断。 java代码实现只要在OnClickItemListener中调用setItemsel方法就可以了实现如下:
 reasonRecyclerView.setLayoutManager(new LinearLayoutManager(this));
 adapter = new ReasonAdapter(R.layout.item_cancel_reason_view, reasons);
 reasonRecyclerView.setAdapter(adapter);

private void initEvent() {
    adapter.setOnRecyclerViewItemClickListener(new BaseQuickAdapter.OnRecyclerViewItemClickListener() {
        @Override
        public void onItemClick(View view, int position) {
            adapter.setItemSel(position);
        }
    });
}


问题一:

点击列表中的RadioButton 失效

当我们把RaidoButton和RecyclerView或者ListVIew相结合的时候, 如果点击RadioButton则就不会出发onItemListener 解决方法如下:

在XML中添加如下属性

android:clickable="false"
android:focusableInTouchMode="false"
android:layout_alignParentRight="true"

因为RadioButtom的优先级高于Item的优先级。

如有疑问请加群 :195109527

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值