今天项目中遇到列表单选,因为一直对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
444

被折叠的 条评论
为什么被折叠?



