Как установить onClickListener () для просмотра Spinner? - PullRequest
1 голос
/ 03 августа 2011

Я хочу поймать взаимодействие с пользователем с помощью спиннера, такого как onCLickListener. В случае ошибки 'not call onClickListener () on AdapterView' я нашел рекомендации, по которым вам следует переопределить конструктор с помощью специального счетчика, чтобы установить onClickListener () для представления, создаваемого счетчиком.

Попробовал, что:

public class MySpinner extends Spinner {

public static final String TAG = "MyApp";

public MySpinner(Context context, AttributeSet attrs) {
    super(context, attrs);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(context, R.array.temp_systems, android.R.layout.simple_spinner_item);
    TextView spinner_text = (TextView) findViewById(android.R.id.text1);
    OnClickListener spinnerOnClickListener = new OnClickListener() {

        public void onClick(View v) {
            Log.d(TAG, "Should do something!");
        }

    };

    spinner_text.setOnClickListener(spinnerOnClickListener);

    setAdapter(adapter);
}

}

но когда я пытаюсь включить это в макет, я получаю сбой при невозможности надуть этот элемент.

Чтобы уточнить здесь, onItemClickListener срабатывает, когда пользователь щелкает элемент в раскрывающемся меню, а не когда свернутый счетчик. Мне нужно перехватить после того, как щелкнул исходный счетчик, но до того, как он создаст выпадающее меню.

Ответы [ 3 ]

1 голос
/ 03 августа 2011

Не уверен, почему вам нужно расширить Spinnner или почему вы назначаете прослушиватель щелчков в TextView.Вы должны назначить слушателя выбора на счетчике.В соответствии с примером Spiner рассмотрим:

1) Наличие макета с элементом управления Spinner

2) Наличие члена Spinner в вашей деятельности

3) Раздуйте макетчерез setContentView, а затем назначить член счетчика через findViewById

4) Установите адаптер для счетчика и вызовите setOnItemSelectedListener на своем счетчике, чтобы назначить слушателя выбора

1 голос
/ 03 августа 2011

Что они могут означать, это Override setOnItemClickListener, а затем вызвать это в конструкторе.Итак, в вашем mySpinner классе вам нужно добавить: [обратите внимание, что он вызывается в прослушивателе щелчков ITEM, что также может быть частью вашей проблемы]

@Override
    public void setOnItemClickListener(
            android.widget.AdapterView.OnItemClickListener l) {
        super.setOnItemClickListener(l);
//... do action here that you want to happen when item in spinner is clicked
    }

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

также возможно стоит использовать

public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) {
     //do stuff
    }
0 голосов
/ 16 августа 2014

Вы можете использовать OnTouchListener вместо OnClickListener, который недоступен для Spinner.

...