动态检查Android中的CheckBoxes

时间:2014-02-05 09:07:14

标签: android checkboxlist android-checkbox

我在表格中有3行,每行有3个复选框。我想根据其ID检查相应的CheckBox

我必须检查以下ID CheckBox

tempArray =[1-2-3,3-2,null];

我已经将这些数据拆分并放入字符串数组(setopts)。更多请参阅我的代码。

Null表示不检查此行的任何CheckBox

我正在我的项目中执行此代码。

Vector<CheckBox> chkBoxList = new Vector<CheckBox>();
Vector<TextView> txtViewList = new Vector<TextView>();
// mat_elemItemSetChk.get(0).size() OF VALUE IS 3

  for (int n = 0; n < mat_elemItemSetChk.get(0).size(); n++) {
     LinearLayout llayout = new LinearLayout(getContext());
     ll.setOrientation(android.widget.LinearLayout.VERTICAL);
     cb = new CheckBox(getContext());
     tv = new TextView(getContext());

for (int r = 0; r < tempArray.size() ; r++) {
    isContains=tempArray.get(r).contains(individualValueSeparator);

   if(isContains){
     setOpts = tempArray.get(r).split("\\-");

    for (int k = 0; k < setOpts.length; k++) 
            {
     ItemValue iv = (ItemValue) mat_elemItemSetChk.get(0).get(n);
        if (((int) iv.getId()) == Integer.parseInt(setOpts[k]))
         {

           mat_elemItemSetChk.get(n).get(Integer.parseInt(setOpts[k])-1);
           cb.setChecked(true);
     }
   }
}else{
         if(tempArray.get(r).toString().equalsIgnoreCase("null")||tempArray.get(r).toString()!=null){
String temp;
String px[]= null;
   temp = tempArray.get(r).toString();
  ItemValue iv = (ItemValue) mat_elemItemSetChk.get(0).get(n);
  if (((int) IV.getId()) == Integer.parseInt(temp))
    {
      mat_elemItemSetChk.get(0).get(Integer.parseInt(temp) - 1);
     cb.setChecked(true);
     }
}else{
cb.setChecked(false);
   }
  }
}

tv.setText(mat_elemItemSetChk.get(0).get(n) .toString());

llayout.addView(cb);
llayout.addView(tv);

chkBoxList.add(cb);
txtViewList.add(tv);


ll.addView(llayout);
// this.addView(tableLayout);

}

提前谢谢。

1 个答案:

答案 0 :(得分:0)

创建一个数组selchkboxlist并将选中的复选框id存储在其中并检查条件如selchkboxlist.isEmpty()如果​​为true然后显示错误消息其他明智的方式...

selchkboxlist=new ArrayList<String>();


    cbs = new CheckBox[8];

    // generate dynamic item check box code
    for(int k = 0; k<8; k++)
    { 

     cbs[k] = new CheckBox(getApplicationContext());
     @SuppressWarnings("deprecation")
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);


     rl.addView(cbs[k], params);
         int j =k+1;
         cbs[k].setText("ITEM" + j);
         cbs[k].setTextColor(Color.parseColor("#000000"));
         cbs[k].setId(k+1);
         cbs[k].setPadding(70, 20, 10, 10);

   // check box on click listener for add in to produduct array with quntity      
  cbs[k].setOnClickListener( new View.OnClickListener()
         { 
             public void onClick(View v) 
             { 
                 String chk = null;

            if (((CheckBox) v).isChecked()) {
                chk = Integer.toString(v.getId());
                    selchkboxlist.add(chk);

            } else {
                 selchkboxlist.remove(chk);

            }
         }
     });

    }



  // button on click listener code 
    b.setOnClickListener(new OnClickListener() {

        @SuppressLint("SdCardPath")
        public void onClick(View v) {

                if (! selchkboxlist.isEmpty()) {
                                           shoe erroe msg here
                                    }else{
                                           go ahed    
                                    }
         }
});