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

时间:2012-10-01 07:58:20

标签: java android android-linearlayout

我有一个LinearLayout,我在其中动态添加一些CheckBox,它们在第一次调用时添加得非常好,当我用不同的值调用相同的方法时,它们没有出现在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++;
        }
    }

编辑:“rel”这里是RelativeLayout。

1 个答案:

答案 0 :(得分:1)

    // 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++;
    }
}

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