У меня проблема с использованием счетчика.По некоторым причинам мне нужно заполнить счетчик (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();
}
});
Но это решение меня не устраивает, потому что я не понимаю, почему мне нужно поместить это вНовая тема.
Есть мысли по этому поводу?Спасибо