Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Programmatically set Spinner VISIBLE and enabled

I have a dynamic Android form with dynamic fields behaviour.
Example: If user fills field A, show field B and hides field C.

I'm using methods view.setVisibility(View.VISIBLE) and view.setEnabled(boolean) for this purpose. This approach works for RadioGroup and EditText, but don't work for Spinner component.
The spinner is set to visible, but is always disabled.
The method .setEnable(true) don't cause any effect.

I need to show the spinner enabled.
If the spinner was visible, the setEnabled() works. But if the spinner was invisible, this 2 commands together don't work.

spinner.setVisibility(View.VISIBLE)
spinner.setEnabled(Boolean.TRUE)

[]'s

like image 761
gfinotti Avatar asked May 27 '26 19:05

gfinotti


1 Answers

Please provide more details. The following code shows you how you can show/hide or enable/disable the spinner.

boolean visibility = true;
    boolean enabled = true;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout linearLayout = new LinearLayout(this);
        final Spinner spinner = new Spinner(this);
        String[] animals = {"cats","dogs","lines","rats"};
        spinner.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,animals));
        linearLayout.addView(spinner);
        Button visiblity = new Button(this);
        visiblity.setText("VisibilityButton");
        linearLayout.addView(visiblity);
        setContentView(linearLayout);
        visiblity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(visibility){
                    spinner.setVisibility(View.INVISIBLE);
                    visibility = false;
                }
                else{
                    spinner.setVisibility(View.VISIBLE);
                    visibility = true;
                }
            }
        });
        Button enabledButton = new Button(this);
        enabledButton.setText("EnabledButton");
        linearLayout.addView(enabledButton);
        enabledButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(enabled){
                    spinner.setEnabled(false);
                    enabled = false;
                }
                else{
                    spinner.setEnabled(true);
                    enabled = true;
                }
            }
        });
    }
like image 58
Hassan Sajjad Avatar answered May 30 '26 11:05

Hassan Sajjad