0

1 ページに 50 個以上のチェックボックスがあるプログラムを入手しました。そして、どのボックスが選択されているかを確認する必要があります。

私はこのようなことができることを知っています:

CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox1);
CheckBox cb2 = (CheckBox) findViewById(R.id.checkBox2);

if (cb1.isChecked){
//get Checkbox name
}
if (cb2.isChecked){
//get Checkbox name
}

しかし、50 個を超えるチェックボックスでこれを行う必要がある場合は、時間がかかります。どちらが選択されているかを確認するためのより速い方法はありますか? 何かのようなもの:

int i;

for (i = 0; i<checkBox.length; i++){
  CheckBox cb+i = (CheckBox) findViewById (R.id.checkBox+i);

     if (cb+i.isChecked){
     //get Checkbox name
     }
}

また、1 つ以上のチェックボックスを選択できます。私が何を意味するか知っていることを願っています。

すでにありがとう、Bigflow

4

4 に答える 4

1

別の回避策は次のとおりです。

CheckBox追加したと仮定し、Java で参照を取得して、次のように子ビューを取得LinearLayoutできるとします。LinearLayout

LinearLayout layout= (LinearLayout)findViewById(R.id.checkbox_container);
ArrayList values = new ArrayList();
for(int i=0; i<layout.getChildCount(); i++)
{
    View v = layout.getChildAt(i);
    if(v instanceof CheckBox)
    {
        CheckBox cb = (CheckBox)v;
        if(cb.isChecked())
        values.add(cb.getText().toString());
    }
}
于 2012-05-04T07:31:03.843 に答える
0

以下でこれを試すことができます。カウントでIDを設定します。

ArrayList<Boolean> booleanList = new ArrayList<Boolean>();

    for(int counter=0; counter<50; counter++) {
        booleanList.add(false);
        CheckBox chkBox = new CheckBox(this);
        chkBox.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1));
        chkBox.setId(counter);
        chkBox.setOnClickListener(chkBoxOnClickListener);
}

private OnClickListener chkBoxOnClickListener = new OnClickListener() {
        @Override
        public void onClick(View view) {
        int chkboxID = ((CheckBox)view).getId();
        chkBox = (CheckBox) findViewById(chkboxID);
            if(chkBox.isChecked()) {
                booleanList.set(chkBox, true);
            }

        }
}
于 2012-05-04T07:36:39.640 に答える
0

CheckBox から配列を作成し、コードごとにそれらをレイアウトに追加することができます

CheckBox[] achecker = new CheckBox[50];
achercker[0] = new CheckBox(context);

または、必要なチェックボックスの数がわからない場合は、ArrayList を使用する方が適しています

ArrayList<CheckBox> lchecker = new ArrayList<CheckBox>(); 
lchecker.add(new CheckBox(context));
于 2012-05-04T07:28:47.147 に答える
0

チェックボックスにリスナーを設定します。checkbox1.setOnCheckChangedListener(this)次にオーバーライド

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
if ( isChecked ){
            // to determine which checkbox use buttonView.getId();
        }
}
于 2012-05-04T07:30:26.073 に答える