Заполните и выполните Spinner в OnClickListener - PullRequest
0 голосов
/ 18 мая 2018

У меня проблема с использованием счетчика.По некоторым причинам мне нужно заполнить счетчик (setAdapter()), а затем показать его (performClick()) в EditText onClickListener.

Мой Spinner правильно инициализирован, поскольку у меня нет видимой ошибки.Просто он не откроется.Следующий код не будет работать:

editText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<String> statusStrings = new ArrayList<>();
                statusStrings.add("PROCESSING");
                statusStrings.add("LATE");
                statusStrings.add("DONE");
                statusStrings.add("REJECT");
                ArrayAdapter<String> adapter = new ArrayAdapter<>(MyActivity.this, android.R.layout.simple_spinner_dropdown_item, statusStrings);        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinner.setAdapter(adapter);
                spinner.performClick();
            }
        });

Однако тот же код будет работать вне события onClick.Кроме того, я решил свою проблему, поместив spinner.performClick(); в новую тему, например:

editText.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    List<String> statusStrings = new ArrayList<>();
                    statusStrings.add("PROCESSING");
                    statusStrings.add("LATE");
                    statusStrings.add("DONE");
                    statusStrings.add("REJECT");
                    ArrayAdapter<String> adapter = new ArrayAdapter<>(MyActivity.this, android.R.layout.simple_spinner_dropdown_item, statusStrings);        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    spinner.setAdapter(adapter);

                    final Handler h = new Handler();
                    new Thread(new Runnable() {
                        public void run() {
                            h.postDelayed(new Runnable() {
                                public void run() {
                                    spinner.performClick();
                                }
                            }, 100);
                        }
                    }).start();
                }
            });

Но это решение меня не устраивает, потому что я не понимаю, почему мне нужно поместить это вНовая тема.

Есть мысли по этому поводу?Спасибо

...