Bhargav
Bhargav

Reputation: 15

Spinner value based on edit text input

I have create a edit text and a spinner, Into the spinner there are more than one selection those are Permanent and temporary. If i input "Brand" in edit text then in the spinner it should show only Permanent not to show temporary but if i input any other word it should display permanent or temporary

I've tried that if i enter the integer then it return the month name. E.g: If I enter 6 then in the spinner it display June.

Main Activity code

        edit = (EditText) findViewById(R.id.editText);
        spinner = (Spinner) findViewById(R.id.spinner);

        String[] months = new DateFormatSymbols().getMonths();


        ArrayAdapter adapter = new ArrayAdapter<String>(this, 
        android.R.layout.simple_spinner_item,months);

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);

        spinner.setOnItemSelectedListener(new 
        AdapterView.OnItemSelectedListener()
        {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, 
            int position, long id)
            {
                edit.setText(String.valueOf(position + 1));
            }


        });

        edit.addTextChangedListener(new TextWatcher()
        {

            @Override
            public void afterTextChanged(Editable s)
            {
                try
                {

                  int nPosition = Integer.parseInt(s.toString());
                    if (nPosition >= 1 && nPosition <= 12)
                    {
                        spinner.setSelection(nPosition - 1);
                    }
                }
                catch(NumberFormatException nfe)
                {

                }
            }
        });

Upvotes: 0

Views: 1022

Answers (2)

Priya Vasoya
Priya Vasoya

Reputation: 215

Try this one...

public class Main2Activity extends AppCompatActivity {

Spinner sp1;

ArrayAdapter<String> sAdapter1;
ArrayAdapter<String> sAdapter2;
String s1[] = {"Permanent"};
String s2[] = {"Permanent", "Temporary"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    sp1 = (Spinner) findViewById(R.id.spinner1);
    EditText et = (EditText) findViewById(R.id.editText1);

    sAdapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, s1);
    sAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    sAdapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, s2);
    sAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    et.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void afterTextChanged(Editable editable) {
            if (editable.toString().equals("Brand")) {
                sp1.setAdapter(sAdapter1);
            } else {
                sp1.setAdapter(sAdapter2);
            }
        }
    });

}
}

Upvotes: 2

Rohan Shrestha
Rohan Shrestha

Reputation: 107

Create two arrays

String[] array1 = new String[]{"Permanent"};
String[] array2 = new String[]{"Permanent", "Temporary"};

Now, on EditText textChanged listener initialise the spinner adapter with suitable array depending on your condition

edit.addTextChangedListener(new TextWatcher(){

            @Override
            public void afterTextChanged(Editable s)
            {
                if(s.toString.equals("BRAND")){
                    spinnerAdapter = new ArrayAdapter(context, android.R.layout.simple_spinner_item, array1)
                }else{
                    spinnerAdapter = new ArrayAdapter(context, android.R.layout.simple_spinner_item, array2)
                }
                spinner.setAdapter(spinnerAdapter);
            }
        });

Upvotes: 0

Related Questions