Как разместить разные CheckBox внутри каждого элемента другого CheckBox?

Я хочу создать checkBox внутри другого checkBox предметы и конечные предметы, которые появляются в textView это общий выбор вторых. Я сделал первый checkBox правильно и работает нормально, но я хочу поместить второй в первый относительно этого: у меня есть более 30 пунктов в первом checkBox так что я не могу использовать случай переключения 0,1,2,...setmultiplechoiceclicklistner() это очень глупо.

Как я могу это сделать?

  <string-array name="shopingItems">
    <item>a</item>
    <item>b</item>
    <item>c</item>
    <item>d</item>
    <item>e</item>
</string-array>
<string-array name="a">

    <item>aa</item>
    <item>ba</item>
    <item>ca</item>
    <item>da</item>
    <item>ea</item>


</string-array>
<string-array name="b">

    <item>ba</item>
    <item>bb</item>
    <item>bc</item>
    <item>bd</item>
    <item>be</item>


</string-array>

Моя деятельность:

 public class CreateAddActivity extends AppCompatActivity {
 private TextView TV;
 private Button btn;
 String[] listItems;
 boolean[] checkedItems;
 ArrayList<Integer> mUserItems = new ArrayList<>();


 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_create_add);
 TV = findViewById(R.id.tvItemSelected);
 btn = findViewById(R.id.btnOrder);

 listItems = getResources().getStringArray(R.array.shopingItems);
 checkedItems = new boolean[listItems.length];



 btn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
      AlertDialog.Builder mBuilder =
          new AlertDialog.Builder(CreateAddActivity.this);
      mBuilder.setTitle("Items available in a shop");
      mBuilder.setMultiChoiceItems(listItems, checkedItems, new 
      DialogInterface.OnMultiChoiceClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int position, boolean 
           isChecked) {
           if (isChecked) {
                mUserItems.add(position);

           } else if (mUserItems.contains(position)) {
                // Else, if the item is already in the array, remove it
                mUserItems.remove(Integer.valueOf(position));
           }
           }
      });


      mBuilder.setCancelable(false);
      mBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int position) {
           StringBuilder item = new StringBuilder();
           for (int i = 0; i < mUserItems.size(); i++) {
                item.append(listItems[mUserItems.get(i)]);
                if ( i != mUserItems.size() - 1 ) {

                item.append(",");//put coma if it is not the last item

                }//not the last item
           }
           //TV.setText(item.toString());

           }


      });
      mBuilder.setNegativeButton("Dismiss", new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
           dialog.dismiss();
           }
      });
      mBuilder.setNeutralButton("clear", new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
           for (int i = 0; i < checkedItems.length; i++) {
                checkedItems[i] = false;
                mUserItems.clear();
                TV.setText("");
           }
           }
      });
      AlertDialog mDialog = mBuilder.create();
      mDialog.show();

      }
 });


 }
  }

0 ответов

Другие вопросы по тегам