1

大家好, 我們想動態地在radiogroup旁邊添加textview。基於服務響應,我們需要在不使用xml的情況下將標籤添加到radiogroup。 在某些情況下基於最長無線電如何在android中動態添加textview到radiogroup

[Here we are showing checkboxes,but based on response it will changes to radiogroup with in radiobutton]

這裏下面的代碼

final RadioGroup rg = new RadioGroup(this); //create the RadioGroup 
      rg.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
      rg.setOrientation(RadioGroup.VERTICAL);//or RadioGroup.VERTICAL 
      rg.setGravity(Gravity.CENTER); 
      final RadioButton[] rb = new RadioButton[items_list.size()]; 
      final CheckBox[] cb = new CheckBox[items_list.size()]; 

for (int i = 0; i < items_list.size(); i++) { 

       LinearLayout ll_orientaion = new LinearLayout(this); 
       ll_orientaion.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 2.0f)); 
       ll_orientaion.setOrientation(LinearLayout.HORIZONTAL); 
       ll_orientaion.setBackgroundColor(getResources().getColor(R.color.white)); 
       ll_orientaion.setWeightSum(2); 
       ll_orientaion.setGravity(Gravity.CENTER); 


       if (max == 1) { 

        rb[i] = new RadioButton(this); 
        rb[i].setText(pd.getName()); 
        rb[i].setGravity(Gravity.CENTER); 
        ll_orientaion.addView(rb[i]); 

        if (pd.getSelected_status().equals("true")) { 
         rb[i].setChecked(true); 

        } 

        hashMap_rdlist.put(rb[i].getText().toString(), rdd); 

        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
         @Override 
         public void onCheckedChanged(RadioGroup group, int checkedId) { 

          ProductOptions rd_getlist = new ProductOptions(); 

          int checkedRadioButtonId = rg.getCheckedRadioButtonId(); 
          RadioButton radioButton = (RadioButton) findViewById(checkedRadioButtonId); 
          // Toast.makeText(ProductOptionsActivity.this, radioButton.getText(), Toast.LENGTH_SHORT).show(); 

          String rd_name = (String) radioButton.getText(); 

        }); 
       } else { 

        cb[i] = new CheckBox(this); 
        cb[i].setButtonTintList(ColorStateList.valueOf(getColor(R.color.colorPrimary))); 
        cb[i].setText(pd.getName()); 
        cb[i].setGravity(Gravity.CENTER); 
        ll_orientaion.addView(cb[i]); 


        } 

        final int finalI = i; 

        cb[i].setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
         @Override 
         public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

          ProductOptions rd_getlist = new ProductOptions(); 
          String check_name = (String) cb[finalI].getText(); 

          if (isChecked) { 

           check_count++; 


          } else { 
           check_count--; 

          } 
         } 
        }); 
       } 
       // Log.d("checklist",""+productoptions_skuId); 

       TextView tv = new TextView(this); 
       LinearLayout.LayoutParams tv1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f); 
       tv.setLayoutParams(tv1); 
       tv1.weight = 2; 
       tv1.gravity = Gravity.CENTER; 
       tv.setText(pd.getSalePrice()); 
       tv.setTextSize(14); 
       tv.setGravity(Gravity.END); 
       if (pd.getSalePrice().equals("0.0")) { 
        tv.setVisibility(View.INVISIBLE); 
       } 
       ll_orientaion.addView(tv); 
       rg.addView(ll_orientaion); 
      } 

主要的問題,當我們添加的LinearLayout到radiGroup查看越來越完美,但單選按鈕動作即不工作,

rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {}

請鬼谷de us 高級謝謝!

+0

'RadioGroup'只能用於它自己的子節點,或者是RadioButton的子類。看來你正在將'LinearLayout'添加爲'RadioGroup'子元素。 – Shaishav

回答

0

使用CheckedTextView爲listview創建一個自定義適配器。

+0

好的。但是當單選按鈕會出現時會產生問題 –

+0

它爲您創建了什麼問題? –

+0

問題意味着checkbutton有多個選項 但單選按鈕有單選項檢查 –