RecyclerView实现单选模式

来源:互联网 发布:ps软件课程设计报告 编辑:程序博客网 时间:2024/05/20 08:21

今天项目中遇到列表单选,因为一直对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
原创粉丝点击