public void addNextList(MultiListItem parentItem) { int level = getChildCount() / 2; // Label: TextView label = new TextView(getContext()); label.setText(field.getCaption(level)); label.setLayoutParams(CollectorView.FULL_WIDTH_LAYOUTPARAMS); addView(label); // Spinner (combo box): final MultiListSpinner spinner = new MultiListSpinner(getContext(), parentItem, onPage); spinner.setLayoutParams(CollectorView.FULL_WIDTH_LAYOUTPARAMS); spinner.setPrompt(field.getCaption(level)); // Item selected event: spinner.setOnItemSelectedListener(this); // Item selection: // Current value: if (!selectionStack.isEmpty()) spinner.selectItem(selectionStack.pop()); // Select default if preSelect=true: else if (field.isPreSelect()) spinner.setSelection(parentItem.getDefaultChildIndex()); // Simulate user click: else if (autoOpenToSelect) spinner.performClick(); // else: first (dummy) item will be selected // Enable/disable spinner (also sets focus event listener): spinner.setEnabled(isEnabled()); // Add the spinner: addView(spinner); }
@Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus && isFieldShown() && isEnabled()) { // Simulate click: ((MultiListSpinner) v).performClick(); // Lose focus again: v.clearFocus(); } }