private ArrayList getAndroidViews() {
   if (myAndroidViews.isEmpty()) {
     final ArrayList views = Views;
     final int len = views.size();
     for (int i = 0; i < len; ++i) {
       final ZLAndroidOptionView v = (ZLAndroidOptionView) views.get(i);
       if (v.isVisible()) {
         v.addAndroidViews();
       }
     }
   }
   return myAndroidViews;
 }
 public void addOptionByName(String name, ZLOptionEntry option) {
   if (name != null) {
     name = name.replaceAll("&", "");
   }
   ZLAndroidOptionView view = null;
   switch (option.getKind()) {
     case ZLOptionKind.BOOLEAN:
       view = new ZLAndroidBooleanOptionView(this, name, (ZLBooleanOptionEntry) option);
       break;
     case ZLOptionKind.BOOLEAN3:
       view = new ZLAndroidBoolean3OptionView(this, name, (ZLBoolean3OptionEntry) option);
       break;
     case ZLOptionKind.STRING:
       view = new ZLAndroidStringOptionView(this, name, (ZLStringOptionEntry) option);
       break;
     case ZLOptionKind.CHOICE:
       view = new ZLAndroidChoiceOptionView(this, name, (ZLChoiceOptionEntry) option);
       break;
     case ZLOptionKind.SPIN:
       view = new ZLAndroidSpinOptionView(this, name, (ZLSpinOptionEntry) option);
       break;
     case ZLOptionKind.COMBO:
       view = new ZLAndroidComboOptionView(this, name, (ZLComboOptionEntry) option);
       break;
     case ZLOptionKind.COLOR:
       view = new ZLAndroidColorOptionView(this, name, (ZLColorOptionEntry) option);
       break;
     case ZLOptionKind.KEY:
     case ZLOptionKind.ORDER:
     case ZLOptionKind.MULTILINE:
       // TODO: implement
       break;
   }
   if (view != null) {
     view.setVisible(option.isVisible());
   }
   addView(view);
 }