У меня есть счетчик, который заполняется из базы данных. Поэтому, если щелкнуть счетчик без элементов, отображается счетчик с пустым элементом списка. Я хочу не показывать счетчик, когда он пуст, и показывать всплывающее сообщение. У меня есть логика, чтобы проверить количество элементов и показать всплывающее сообщение, но я не могу найти, где вызвать функцию. Какое событие вызывается при нажатии счетчика и загрузке элементов счетчика?
Показывать всплывающее сообщение, когда счетчик андроида пуст
Ответы (3)
Spinner
является подклассом View
, поэтому View.setOnClickListener()
можно использовать для изменения реализации onClick()
, которая будет вызываться при нажатии. Вы можете переопределить onClick()
, чтобы проверить, пусто ли Spinner
, а затем показать Toast
.
Исправление:
Поскольку вы не можете использовать setOnClickListener
для Spinner
, вы можете использовать решение, предложенное в этом вопросе (содержимое которого я вставил ниже).
Вместо установки OnClickListener счетчика мы устанавливаем OnTouchListener и OnKeyListener.
spinner.setOnTouchListener(Spinner_OnTouch);
spinner.setOnKeyListener(Spinner_OnKey);
и слушатели:
private View.OnTouchListener Spinner_OnTouch = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
doWhatYouWantHere();
}
return true;
}
};
private static View.OnKeyListener Spinner_OnKey = new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
doWhatYouWantHere();
return true;
} else {
return false;
}
}
};
Почему бы не установить onClickListener
?
Spinner s = (Spinner)findViewById(R.id.myspinner);
s.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
checkForItemCount(); //where you show your Toast if it's empty.
}
});
Редактировать: я думаю, что не полностью охватываю ваш вопрос, поэтому я сам попробовал код. Это работает исключительно для вас.
final Spinner s = (Spinner)findViewById(R.id.spinner1); // get reference
ArrayList<String> mList = new ArrayList<String>(); //some list without items
s.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mList));
s.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP && mList.size() == 0) {
toast("Empty"); //lazy method for toasting
s.setPressed(false); //closes the spinner.
}
return true;
}
});
s.setOnClickListener(new View.OnClickListener() {
- person Mohamed_AbdAllah; 05.12.2012
s.performClick()
).
- person stealthjong; 05.12.2012
Это функция, когда элемент выбран, если вы об этом спрашивали. Для получения дополнительной помощи вам нужно будет опубликовать свой код. В противном случае мы понятия не имеем, что у вас происходит.
spinner.setOnItemSelectedListener(new OnItemSelectedListener()