2012-10-01 2 views
0

LinearLayout에서 일부 CheckBoxes를 동적으로 추가하고 있습니다. 첫 번째 호출에서 완벽하게 잘 추가됩니다. 다른 값으로 동일한 메서드를 호출하면 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++; 
     } 
    } 

편집 : 여기 RelativeLayout의는 "확인해"

여기에 뷰를 추가 내 방법입니다.

+0

이보기를 대화 상자 또는 활동에 추가합니까? –

+0

Activity에서 RelativeLayout을 정의했습니다. RelativeLayoyt에서보기 추가하기. –

+0

"그것들은'LinearLayout'에 나타나지 않습니다, 당신은'OptionView'를 의미합니까? 'setOption' 메서드가 호출 될 때마다 새로운 LinearLayout을 정의하고 있습니다. 그래서 추가 된 뷰가 동일한'LinearLayout'에없는 이유입니다. – Aprian

답변

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

시도해보고 작동하는지 확인하십시오.

+0

코드의 일부를 편집했습니다. 나를 위해 정말로 효과가 있었던 것에 그것을 과시했다. –

+0

당신은'rel'에서'OptionView'를 제거하고'rel'에서 다시 읽을 필요가 없습니다. 'rel'에 한 번만 추가하면됩니다. – Aprian

+0

상위 뷰를 제거해야한다는 오류가 나타납니다. –

관련 문제