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