Android如何动态生成Radio和RadioGroup

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android如何动态生成Radio和RadioGroup相关的知识,希望对你有一定的参考价值。

在res/layout配置的话,个数都是固定的了啊,要求是一个RadioGroup里面存放若干Radio(这些都是从数据库获取来的数据),然后每次动态生成Radio,有可能这次获取的跟上一次获取的不一样,所以不能再xml文件中写死。
总的来说就是new一个RadioGroup和多个Radio(示例可以用For循环生成多个)如何绑定起来???
是这样写么?
public class RadionButtonTest extends Activity
/** RadioButton 所属的组。*/
RadioGroup mRadioGroup = new RadioGroup(this);
/**
* @param savedInstanceState ..
*/
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
for (int i = 0; i < 10; i++)
RadioButton radioButton = new RadioButton(this);
radioButton.setText("this is RadioButton i ");
mRadioGroup.addView(radioButton);



但是这样的话在new RadioGroup的时候就报空指针了,main.xml中没有任何修改,保持android工程生成时候的默认内容。

jzy6606172的回答解决了这个问题,但是RadioButton数量过多的时候用LinearLayout一页就放不下了,请问用哪个布局可以自动向下扩展呢 ?? 谢谢!

private LinearLayout layout; //布局 , 可以在xml布局中获得

 private RadioGroup group ; //点选按钮组

 

    public void onCreate(Bundle savedInstanceState) 

        super.onCreate(savedInstanceState);

        

        layout = new LinearLayout(this); //实例化布局对象

        

        group = new RadioGroup(this); //实例化单选按钮组

        

        //添加单选按钮

        for(int i = 0 ; i < 5 ; i++)

         RadioButton radio = new RadioButton(this);

         radio.setText("radio" + i);

         group.addView(radio);

        

        

        //将单选按钮组添加到布局中

        layout.addView(group);

        

        this.setContentView(layout);

     

可以把单选按钮组放在 ScrollView中 ,这样的话 , 多出的部分可以滚动查看了。

参考技术A

    获得需要动态生成的数据(如果只是测试或者学习可以手写静态数据)

    先new出一个RadioGroup 实例

    根据数据循环new出Radio 实例并赋值

    将每一个Radio实例添加到RadioGroup里面

    将RadioGroup实例添加到UI布局指定位置

在我的情况下如何动态更改 HTML 元素?

【中文标题】在我的情况下如何动态更改 HTML 元素?【英文标题】:How to change the HTML elements dynamically in my case? 【发布时间】:2011-10-30 15:16:57 【问题描述】:

我的页面上有一组单选按钮:

<form ...>
   <input type="radio" name="people" checked> Student
   <input type="radio" name="people"> Teacher
   <input type="radio" name="people"> Assistant

   <!-- Here is the dynamic content, which could be check boxes or radio buttons-->
</form>

我想实现的功能是:

根据单选按钮的选择,单选按钮后面的内容动态地改变。 (单选按钮和内容在表单中。)

例如:

    如果选择“student”,则动态内容部分为(复选框):

    <input type="checkbox" name="name" /> Name <br />
    <input type="checkbox" name="Age" /> Age <br />
    <input type="checkbox" name="grade" /> Grade <br />
    

    如果选择了“Teacher”,则动态内容部分为(复选框和单选按钮):

    <input type="checkbox" name="subject" /> Subject <br />
    
    <input type="radio" name="code" checked> 111
    <input type="radio" name="code"> 222
    <input type="radio" name="code"> 333
    

    如果选择“Assistant”,则动态内容部分为其他复选框。

如何在jQuery中实现这个动态内容变化


我尝试了什么

我尝试在 Javascript 中动态创建 HTML 元素,但我觉得这不是一个好方法,因为我必须在 Javascript 中将 HTML 元素编写为字符串。

【问题讨论】:

您可以使用 CSS 显示和隐藏各种元素。到目前为止,您尝试过什么? 我尝试在 Javascript 中动态创建 HTML 元素,但我觉得这不是一个好方法,因为我必须在 Javascript 中将 HTML 编写为字符串 【参考方案1】:

试试这个

工作demo

标记更改

<form ...>
   <input type="radio" name="people" value="student" checked> Student
   <input type="radio" name="people" value="teacher"> Teacher
   <input type="radio" name="people" value="assistant"> Assistant

   <div class="content student">
     <input type="checkbox" name="name" /> Name <br />
     <input type="checkbox" name="Age" /> Age <br />
    <input type="checkbox" name="grade" /> Grade <br />
   </div>

   <div class="content teacher" style="display:none;">
      Teacher content
   </div>

   <div class="content assistant" style="display:none;">
      Assistant content
   </div>
</form>

Js

$(function()

   $("input[name=people]").click(function()
      $("div.content").not("."+this.value).hide();
      $("."+this.value).show();
   );

);

【讨论】:

@Leem - 你看过这个吗?【参考方案2】:

如果我正确理解您的问题...我会创建不同的隐藏 div,其中包含您正在寻找的组合。然后单击单选按钮,我将隐藏您不想显示的 div 并显示您正在寻找的 div。

【讨论】:

【参考方案3】:

将所有三个可能的元素放在静态 html 中,并用 div 包装每个部分。然后在点击时显示和隐藏 div

【讨论】:

以上是关于Android如何动态生成Radio和RadioGroup的主要内容,如果未能解决你的问题,请参考以下文章

C#如何动态加载RadioButton控件

如何使用jQuery wrap()包装动态创建的元素?

vue项目中radio/checkbox无法选择的问题

vue项目中radio/checkbox无法选择的问题

如何独立运行由gnu-radio伴侣生成的python文件(.py)(没有GRC GUI)?

如何指向在 Android 的 ListView 中动态生成的 EditText 元素?