2017-09-28 49 views
2

我有一个spinner在我看来。根据微调值的位置,我创建了dynamic checkbox,数据通过API。现在当我改变微调值比我想要的:动态删除视图或覆盖视图Android

Hide previous checkboxcreate new OR override previous checkbox与新的一个。

立即写入我可以创建动态复选框,并且当我更改微调器值时,它将添加新的复选框和当前框。我不能hide/remove/override他们。

这里是我的代码:

otherSchool.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       if (position == 0) { 
        if (allSchoolClassesName.size() > 0) { 
         for (int j = 0; j < allSchoolClassesName.size(); j++) { 
          final CheckBox addonChechbox = new CheckBox(context); 
          addonChechbox.setText(""); 
          dialog_checkboox_options_dynamic_school_class.removeView(addonChechbox); 
          addonChechbox.setText(allSchoolClassesName.get(j)); 
          addonChechbox.setId(j); 
          addonChechbox.setTextColor(context.getResources().getColor(R.color.White)); 
          addonChechbox.setButtonDrawable(context.getResources().getDrawable(R.drawable.selector_checkbox)); 
          addonChechbox.setPadding(0, 0, 0, 0); 
          addonChechbox.setTextColor(context.getResources().getColor(R.color.black)); 
          addonChechbox.setTypeface(tf); 

          for (int groupIds = 0; groupIds < groupsArray.size(); groupIds++) { 
           if (allSchoolClassesId.get(j).equalsIgnoreCase(groupsArray.get(groupIds))) { 
            addonChechbox.setChecked(true); 
            addonChechbox.setButtonDrawable(context.getResources().getDrawable(R.drawable.selector_checkbox)); 
            selectedGroupId.add(allSchoolClassesId.get(addonChechbox.getId())); 
            selectedGroupType.add("1"); 
           } 
          } 
          dialog_checkboox_options_dynamic_school_class.addView(addonChechbox); 
          addonChechbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
           @Override 
           public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

             if (isChecked) { 
              selectedGroupId.add(allSchoolClassesId.get(addonChechbox.getId())); 
              selectedGroupType.add("1"); 
             } else { 
              boolean findSelectedId = selectedGroupId.contains(allSchoolClassesId.get(addonChechbox.getId())); 
              if (findSelectedId) { 
               int indexSelectedId = selectedGroupId.indexOf(allSchoolClassesId.get(addonChechbox.getId())); 
               selectedGroupId.remove(indexSelectedId); 
               selectedGroupType.remove(indexSelectedId); 
              } 
             } 
           } 
          }); 
         } 
        } 
       } else if (position > 0) { 
        if (schData.length() > 0) { 
         int i = 1; 
         int pos = position; 
         for (int k = 0; schData.length() > 0; k++) { 
          if (position == i) { 
           JSONObject achArray = schData.optJSONObject(k); 
           JSONArray grpList = achArray.optJSONArray("grpList"); 
           for (int j = 0; j < grpList.length(); j++) { 
            final CheckBox addonChechbox = new CheckBox(context); 
            addonChechbox.setText(""); 
            dialog_checkboox_options_dynamic_school_class.removeView(addonChechbox); 
            JSONObject classObj = grpList.optJSONObject(j); 
            String classes = classObj.optString("classes"); 
            JSONObject jsonObjectId = classObj.optJSONObject(Constants.CONSTANT_id); 
            final String classGroupId = jsonObjectId.optString(Constants.CONSTANT_$id); 
            addonChechbox.setText(""); 
            addonChechbox.setText(classes); 
            addonChechbox.setId(j); 
            addonChechbox.setTextColor(context.getResources().getColor(R.color.White)); 
            addonChechbox.setButtonDrawable(context.getResources().getDrawable(R.drawable.selector_checkbox)); 
            addonChechbox.setPadding(0, 0, 0, 0); 
            addonChechbox.setTextColor(context.getResources().getColor(R.color.black)); 
            addonChechbox.setTypeface(tf); 

            for (int groupIds = 0; groupIds < groupsArray.size(); groupIds++) { 
              if (classGroupId.equalsIgnoreCase(groupsArray.get(groupIds))) { 
                addonChechbox.setChecked(true); 
                addonChechbox.setButtonDrawable(context.getResources().getDrawable(R.drawable.selector_checkbox)); 
                selectedGroupId.add(classGroupId); 
                selectedGroupType.add("1"); 
              } 
            } 
            dialog_checkboox_options_dynamic_school_class.removeView(addonChechbox); 
            dialog_checkboox_options_dynamic_school_class.addView(addonChechbox); 
            addonChechbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
             @Override 
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

              if (isChecked) { 
               selectedGroupId.add(classGroupId); 
               selectedGroupType.add("1"); 
              } else { 
               boolean findSelectedId = selectedGroupId.contains(classGroupId); 
               if (findSelectedId) { 
                int indexSelectedId = selectedGroupId.indexOf(classGroupId); 
                selectedGroupId.remove(indexSelectedId); 
                selectedGroupType.remove(indexSelectedId); 
               } 
              } 
             } 
            }); 
           } 
           break; 
          } 
           i++; 
         } 
        } 
       } 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
    }); 

编辑和建议,欢迎选购。

+0

你的'dialog_checkboox_options_dynamic_school_class'是什么? – Kunu

+0

而你的代码不是很明白,所以更好的添加一些评论。 – Kunu

+0

@Kunu它是一个'LinearLayout'。 – Vivek

回答

3

我找到了一个解决方案,但可能不是最好的或不推荐的(我认为)。

删除LinearLayout的所有内容。

  otherSchool.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       if (position == 0) { 
      dialog_checkboox_options_dynamic_school_class.removeAllViews(); 
       } else if (position > 0) { 
        if (schData.length() > 0) { 
           dialog_checkboox_options_dynamic_school_class.removeAllViews(); 
       } 
       } 
      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

       } 
      }); 

至少现在解决了我的问题。

1

那么,我仍然不能明白你想要什么。 但是通过查看你的代码和解释,我想你想在点击Spinner项目时删除所有以前添加的CheckBox。

所以每当你点击微调项

- 首先,使用下面的代码

if(((LinearLayout) dialog_checkboox_options_dynamic_school_class).getChildCount() > 0) 
     ((LinearLayout) dialog_checkboox_options_dynamic_school_class).removeAllViews(); 

然后添加新的CheckBox像你做删除所有的子视图(在你的情况即。复选框)。

+0

thnkx您的回应。我正在实施与您发布的相同的解决方案。 – Vivek