Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android:单选按钮中的单选按钮_Android_Android Radiogroup - Fatal编程技术网

android:单选按钮中的单选按钮

android:单选按钮中的单选按钮,android,android-radiogroup,Android,Android Radiogroup,我对安卓非常陌生,这是我的第一个应用程序,所以如果我的问题不清楚,请更正,我将很高兴地添加更多关于我试图实现的信息。 我有一个动态建立的无线电组。在这个广播组中,我希望有另一个广播组,具体取决于从第一个广播组中选择的单选按钮。 假设我有一个项目数组列表,每个项目都有一些可用的大小(即:XS,s,L)。如果我选中单选按钮“XS”,我希望另一个单选组具有所选大小的可用颜色XS。 我构建它的方法是创建一个单选组,并动态创建它的单选按钮。在onCheckedChanged()方法中,我调用了create

我对安卓非常陌生,这是我的第一个应用程序,所以如果我的问题不清楚,请更正,我将很高兴地添加更多关于我试图实现的信息。 我有一个动态建立的无线电组。在这个广播组中,我希望有另一个广播组,具体取决于从第一个广播组中选择的单选按钮。 假设我有一个项目数组列表,每个项目都有一些可用的大小(即:XS,s,L)。如果我选中单选按钮“XS”,我希望另一个单选组具有所选大小的可用颜色XS。 我构建它的方法是创建一个单选组,并动态创建它的单选按钮。在onCheckedChanged()方法中,我调用了createRadioButtonsForAvailableColors()方法。这一个为选中的尺寸创建了具有必要颜色的单选按钮,但一旦我选中了上部单选组中的另一个尺寸,可用于此尺寸的新颜色将添加到为之前选择的尺寸显示的颜色中。 非常感谢。 以下是我的创建方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_show_product_details);

    sizesList = getSizes(getIDFromPreviousActivity());
    createRadioButtonsForAvailableSizes(sizesList);     
}
以下是我为包含可用大小单选按钮的单选组创建的内容:

// creates the radio buttons with the available sizes   
public void createRadioButtonsForAvailableSizes(ArrayList<String>  sizeList) {
    productDetailsLayout = (LinearLayout) findViewById(R.id.productDetailsLayout);
    RadioGroup rg = new RadioGroup(this);
    rg.setOrientation(RadioGroup.HORIZONTAL);


    int n = sizeList.size();
    final RadioButton[] rb = new RadioButton[n];
    for(int i=0; i< sizeList.size(); i++) {
        colorList = getColors(getIDFromPreviousActivity(),sizeList.get(i));

         rg.setOrientation(RadioGroup.HORIZONTAL);
         rb[i] = new RadioButton(this);
         rg.addView(rb[i]);
         rb[i].setText(sizesList.get(i).toString());
         rb[i].setId(getIDForRadioButton(sizesList.get(i).toString()));
         rb[i].setButtonDrawable(R.drawable.radiobuttonunchecked);
         rb[i].setOnCheckedChangeListener(this);

    }
    productDetailsLayout.addView(rg);
    productDetailsLayout.setPadding(50, 50, 50, 50);
}
//创建具有可用大小的单选按钮
可用大小的公用void CreateRadioButtons(ArrayList sizeList){
productDetailsLayout=(LinearLayout)findViewById(R.id.productDetailsLayout);
放射组rg=新放射组(本);
rg.设置方向(放射组水平);
int n=sizeList.size();
最终单选按钮[]rb=新单选按钮[n];
对于(int i=0;i
以下是颜色的创建(与尺寸相同):

//为可用颜色创建单选按钮
可用颜色的公共void CreateRadioButtons(ArrayList颜色列表){
Log.d(“createRadioButtonsForAvailableColors”和“);
productDetailsLayout=(LinearLayout)findViewById(R.id.productDetailsLayout);
放射组rg=新放射组(本);
rg.设置方向(放射组水平);
int n=colorList.size();
最终单选按钮[]rb=新单选按钮[n];
对于(int i=0;i
以下是我的onCheckedChange方法:

     @Override 
 public void onCheckedChanged(CompoundButton button, boolean isChecked) {
        button.setButtonDrawable(isChecked ? R.drawable.radiobuttonchecked : R.drawable.radiobuttonunchecked);
        String text = button.getText().toString();
        int productID = getIDFromPreviousActivity();
        ArrayList<String> colorList = getColors(productID, text);
        createRadioButtonsForAvailableColors(colorList);
    }
@覆盖
检查更改后的公共无效(复合按钮按钮,布尔值已检查){
按钮.setButtonDrawable(选中?R.drawable.radiobuttonchecked:R.drawable.radiobuttonunchecked);
String text=button.getText().toString();
int productID=getIDFromPreviousActivity();
ArrayList colorList=getColors(productID,text);
CreateRadioButtonSforAvailableColor(颜色列表);
}
内部组是正确创建的,但在检查第一个组中的一个大小后,它通常会构建子组单选按钮。如果单击一个尺寸,它将显示可用的颜色。但是,更改选中的尺寸时,显示当前选定尺寸颜色的按钮将添加到之前显示的先前选定尺寸的按钮中。如何取消第一次选择尺寸时创建的内部按钮,并仅显示当前选定尺寸的可用颜色

我认为这可能不是构建它的正确方法。因此,我有两个问题:

  • 通常,做这件事最好的方法是什么?由于我的内部单选组取决于从第一个组中选择的单选按钮,因此我假设应该在onCheckedChange()方法中调用内部组的创建。我应该从这里开始另一项活动,还是可以在一项活动中全部完成
  • 如果我的方法正确,您能告诉我如何删除创建的内部单选按钮,以防主组中的单选按钮发生更改吗

  • 谢谢

    因此,如果我理解了这一点,当您更改sizes单选按钮的值时,问题就出现了,这意味着颜色不会消失

  • 好吧,Java是关于很多样板的,没有什么好说的(我可能会选择类似的方式)

  • 在开始添加内容之前,您可以在
    createRadioButtonsForAvailableColors
    方法中添加以下内容:

  • productDetailsLayout.removeViews(0,productDetailsLayout.getChildCount())


    将删除从某个位置开始的任意数量的子视图(因此我将amb传递给它0和子视图的总数)。

    感谢您的回答:是的,如果我选择例如“XS”,它将显示XS大小的可用颜色。如果然后我选择“S”大小,它会在XS可用颜色下面添加S可用颜色。我从代码中知道可用的颜色列表是build right accord
         @Override 
     public void onCheckedChanged(CompoundButton button, boolean isChecked) {
            button.setButtonDrawable(isChecked ? R.drawable.radiobuttonchecked : R.drawable.radiobuttonunchecked);
            String text = button.getText().toString();
            int productID = getIDFromPreviousActivity();
            ArrayList<String> colorList = getColors(productID, text);
            createRadioButtonsForAvailableColors(colorList);
        }