动态在RadioGroup加载RadioButton

先来看一下效果图

这里写图片描述

看到效果图,如果让你去实现的话,怎么去实现,相信大家会有自己的实现方法,这儿我就来说说我的思路。

思路:因为要满足单选的需求,我就用RadioGroup里动态加载RadioButton,但是RadioGroup要不就横着排、要不就竖着排,我们要想让它自动换行,我们可以重写RadioGroup。

一、我们先来看RadioGroup布局文件

   <com.sanjioa.widget.FlowRadioGroup
                android:id="@+id/month_regions_group"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >
   </com.sanjioa.widget.FlowRadioGroup>

FlowRadioGroup 是我们重写的RadioGroup,我会把这个文件上传到我的资源,有需要的大家可以自己下载。

二、RadioButton的布局文件

<?xml version="1.0" encoding="utf-8"?>
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/month_popwindow_radiobutton"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:background="@drawable/radiobutton_style"
    android:button="@null"
    android:gravity="center"
    android:paddingBottom="@dimen/space_10_dp"
    android:paddingLeft="@dimen/space_20_dp"
    android:paddingRight="@dimen/space_20_dp"
    android:paddingTop="@dimen/space_10_dp"
    android:text="月均提货量"
    android:textColor="@color/radiobutton_text_color"
    android:textSize="@dimen/text_14_size" />

三、主要的代码

LayoutInflater inflater = LayoutInflater.from(this);
// 增加天数的数据
        for (int i = 0; i < daysList.size(); i++) {
        //引入这个radioButto的布局要写在循环里边,要不然会报错
            RadioButton button = (RadioButton) inflater.inflate(
                    R.layout.activity_month_radiobutton, null);
            button.setText(daysList.get(i).getName());
            // 定义id
            button.setId(Tools.changeToInt(daysList.get(i).getId()));
            button.setTag(daysList.get(i));
            month_regions_group.addView(button);
        }

daysList是我们通过网络请求获得的数据list,我们对它循环遍历,依次加载RadioButton.

四、如果我们不用网络请求数据,也可以在代码里加载固定的RadioButton

public class MonthRadioButtonManager {
    public MonthRadioButtonManager() {
        super();
    }

    public static List<MonthRadioButtonBean> getMonthDays() {
        List<MonthRadioButtonBean> days = new ArrayList<MonthRadioButtonBean>();
        days.add(new MonthRadioButtonBean("全部", "2"));
        days.add(new MonthRadioButtonBean("天数 ≥ 20", "20"));
        days.add(new MonthRadioButtonBean("15≤天数<20", "15"));
        days.add(new MonthRadioButtonBean("10≤天数<15", "10"));
        days.add(new MonthRadioButtonBean("7≤天数<10", "7"));
        days.add(new MonthRadioButtonBean("4≤天数<7", "4"));
        days.add(new MonthRadioButtonBean("1≤天数<4", "1"));
        days.add(new MonthRadioButtonBean("天数=0", "0"));
        return days;
    }   
}

然后,我们可以通过 MonthRadioButtonManager.getMonthDays()方法来获得数据list的内容。

FlowRadioGroup 的下载地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值