Значение обтекателя на основе ввода текста редактирования - PullRequest
0 голосов
/ 02 июля 2019

Я создал текст редактирования и счетчик. В счетчик добавлено несколько вариантов выбора: постоянный и временный.Если я введу «Бренд» в редактируемом тексте, то на счетчике должно отображаться только Постоянное, чтобы не отображать временное, но если я ввожу любое другое слово, оно должно отображать постоянное или временное

Я пытался это сделать, если введуцелое число, то возвращает имя месяца.Например: если я ввожу 6, то на счетчике будет отображаться июнь.

Основной код активности

        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)
                {

                }
            }
        });

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Попробуйте это ...

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);
            }
        }
    });

}
}
0 голосов
/ 02 июля 2019

Создать два массива

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

Теперь в обработчике EditText textChanged инициализируйте адаптер счетчика подходящим массивом в зависимости от вашего состояния

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);
            }
        });
...