Java 动态添加的视图不重置?

Java 动态添加的视图不重置?,java,android,android-linearlayout,Java,Android,Android Linearlayout,我有一个LinearLayout,其中我动态添加了一些复选框,它们在第一次调用时添加得非常好,当我使用不同的值调用同一个方法时,它们不会出现在该LinearLayout中,旧值不会被新值替换 我检查了LogCat中的值,它们看起来很好,无论我传递什么,都会显示在LogCat中,但不会显示在LinearLayout中 下面是我添加视图的方法: private void setOptions(int questionID2) { ArrayList<String> opt

我有一个LinearLayout,其中我动态添加了一些复选框,它们在第一次调用时添加得非常好,当我使用不同的值调用同一个方法时,它们不会出现在该LinearLayout中,旧值不会被新值替换

我检查了LogCat中的值,它们看起来很好,无论我传递什么,都会显示在LogCat中,但不会显示在LinearLayout中

下面是我添加视图的方法:

private void setOptions(int questionID2) {
        ArrayList<String> options = pustakDB.getOptions(questionID2);
        Log.e("optionsInAct", options.toString() + " size " + options.size());

        OptionView = new LinearLayout(this);
        OptionView.setOrientation(LinearLayout.VERTICAL);
        RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
        p.addRule(RelativeLayout.BELOW, img.getId());
        p.addRule(RelativeLayout.RIGHT_OF, questionNumber.getId());
        rel.addView(OptionView, p);

        int i = 0;
        while (i < options.size()) {
            CheckBox c = new CheckBox(this);
            c.setText(options.get(i));
            c.setId(i);
            OptionView.addView(c);
            i++;
        }
    }
private void setOptions(int questionID2){
ArrayList options=pustakDB.getOptions(问题ID2);
Log.e(“optionsInAct”,options.toString()+“size”+options.size());
OptionView=新的线性布局(此);
OptionView.setOrientation(线性布局.垂直);
RelativeLayout.LayoutParams p=新的RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_内容,
RelativeLayout.LayoutParams.WRAP_内容);
p、 addRule(RelativeLayout.down,img.getId());
p、 addRule(RelativeLayout.RIGHT_OF,questionNumber.getId());
相对添加视图(OptionView,p);
int i=0;
而(i
编辑:“rel”这里是RelativeLayout

//把这个放在别的地方
    // put this somewhere else
    OptionView = new LinearLayout(this);
    OptionView.setOrientation(LinearLayout.VERTICAL);
    RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    p.addRule(RelativeLayout.BELOW, img.getId());
    p.addRule(RelativeLayout.RIGHT_OF, questionNumber.getId());
    rel.addView(OptionView, p);


private void setOptions(int questionID2) {
    ArrayList<String> options = pustakDB.getOptions(questionID2);
    Log.e("optionsInAct", options.toString() + " size " + options.size());

    // this will remove all views from OptionView
    OptionView.removeAllViews();

    int i = 0;
    while (i < options.size()) {
        CheckBox c = new CheckBox(this);
        c.setText(options.get(i));
        c.setId(i);
        OptionView.addView(c);
        i++;
    }
}
OptionView=新的线性布局(此); OptionView.setOrientation(线性布局.垂直); RelativeLayout.LayoutParams p=新的RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_内容, RelativeLayout.LayoutParams.WRAP_内容); p、 addRule(RelativeLayout.down,img.getId()); p、 addRule(RelativeLayout.RIGHT_OF,questionNumber.getId()); 相对添加视图(OptionView,p); 私有无效设置选项(int问题ID2){ ArrayList options=pustakDB.getOptions(问题ID2); Log.e(“optionsInAct”,options.toString()+“size”+options.size()); //这将从OptionView中删除所有视图 OptionView.removeAllViews(); int i=0; 而(i

试试这个,看看它是否有效。

是否将这些视图添加到对话框或活动中?我在活动中定义了RelativeLayout。在RelativeLayoyt中添加视图。“它们没有出现在该
线性布局中
”,您的意思是
选项视图
?每次调用
setOption
方法时,您都在定义一个新的LinearLayout,这就是为什么您添加的视图不在同一个
LinearLayout
上的原因。我认为应该创建新的LinearLayout,以消除旧条目。让我再次编译。您可以调用
removeAllView()
来删除旧条目。我编辑了您的一部分代码。将其更改为真正对我有用的内容。您实际上不需要从
rel
中删除
选项view
,然后将其重新读取到
rel
。您应该只向
rel
添加一次,就这样。