android:单选按钮中的单选按钮
我对安卓非常陌生,这是我的第一个应用程序,所以如果我的问题不清楚,请更正,我将很高兴地添加更多关于我试图实现的信息。 我有一个动态建立的无线电组。在这个广播组中,我希望有另一个广播组,具体取决于从第一个广播组中选择的单选按钮。 假设我有一个项目数组列表,每个项目都有一些可用的大小(即:XS,s,L)。如果我选中单选按钮“XS”,我希望另一个单选组具有所选大小的可用颜色XS。 我构建它的方法是创建一个单选组,并动态创建它的单选按钮。在onCheckedChanged()方法中,我调用了createRadioButtonsForAvailableColors()方法。这一个为选中的尺寸创建了具有必要颜色的单选按钮,但一旦我选中了上部单选组中的另一个尺寸,可用于此尺寸的新颜色将添加到为之前选择的尺寸显示的颜色中。 非常感谢。 以下是我的创建方法:android:单选按钮中的单选按钮,android,android-radiogroup,Android,Android Radiogroup,我对安卓非常陌生,这是我的第一个应用程序,所以如果我的问题不清楚,请更正,我将很高兴地添加更多关于我试图实现的信息。 我有一个动态建立的无线电组。在这个广播组中,我希望有另一个广播组,具体取决于从第一个广播组中选择的单选按钮。 假设我有一个项目数组列表,每个项目都有一些可用的大小(即:XS,s,L)。如果我选中单选按钮“XS”,我希望另一个单选组具有所选大小的可用颜色XS。 我构建它的方法是创建一个单选组,并动态创建它的单选按钮。在onCheckedChanged()方法中,我调用了create
@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(颜色列表);
}
内部组是正确创建的,但在检查第一个组中的一个大小后,它通常会构建子组单选按钮。如果单击一个尺寸,它将显示可用的颜色。但是,更改选中的尺寸时,显示当前选定尺寸颜色的按钮将添加到之前显示的先前选定尺寸的按钮中。如何取消第一次选择尺寸时创建的内部按钮,并仅显示当前选定尺寸的可用颜色
我认为这可能不是构建它的正确方法。因此,我有两个问题:
谢谢因此,如果我理解了这一点,当您更改sizes单选按钮的值时,问题就出现了,这意味着颜色不会消失
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);
}