Есть ли способ использовать setOnClickListener с Android Spinner?
java.ленг.RuntimeException - " не вызывайте setOnClickListener для AdapterView. Вы, вероятно, хотите setOnItemClickListener вместо этого", но это неправильно. Я использую setOnItemClickListener, чтобы сделать некоторые вещи на основе нового выбора, но мне также нужно сделать некоторые вещи, прежде чем пользователь изменит выбор. В частности, я собираю данные для каждого выбора, который необходимо сохранить в файл перед переходом к другому выбору, так как другой выбор связан с другой набор данных. Есть ли способ использовать setOnClickListener с Android Spinner?
spinner.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Do some stuff before the user changes the selection
...
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int pos, long id) {
// Do some stuff based onItemSelected
...
2 ответов
вам нужно будет установить прослушиватель щелчка на базовом представлении (обычно TextView с id: android.R.id.text1) спиннера. Для этого:
- создать пользовательский счетчик
- в конструкторе (с атрибутами) создайте спиннер, поставив макет android.R. макет.simple_spinner_item
- сделайте findViewById(android.R.id.text1), чтобы получить TextView
- Теперь установите onClickListener в TextView
вы можете реплицировать событие onclick с помощью ontouch events
this.spinner=(Spinner)findViewById(R.id.spinner);
this.spinner.setClickable(false);
this.spinner.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.v(TAG, "spinner touch");
//replicating a click
if(event.getAction() == MotionEvent.ACTION_UP){
v.playSoundEffect(android.view.SoundEffectConstants.CLICK);
}
return true;
}
});