0

我有一个 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。

4

1 回答 1

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

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

于 2012-10-01T08:25:25.573 回答