Установка счетчика onClickListener () в Android

Я пытаюсь заставить onClickListener запускать спиннер но я получаю следующую ошибку:

Java.lang.RuntimeException: «Не вызывайте setOnClickListener для AdapterView. Возможно, вы захотите вместо этого setOnItemClickListener»

Я уверен, что хочу вызвать onClickListener, а НЕ onItemClickListener. Я нашел вопрос, заданный кем-то другим в Stack Overflow: Есть ли способ использовать setOnClickListener с Android Spinner?

Ответ гласит:

Вам нужно будет установить Click слушатель на основном представлении (обычно TextView с идентификатором: android.R.id.text1) счетчика. Чтобы сделайте так:

Создайте собственный счетчик в конструктор (с атрибутами) создать прядильщик, предоставив макет android.R.layout.simple_spinner_item Сделайте findViewById (android.R.id.text1) чтобы получить TextView. Теперь установите onClickListener в TextView

Я попробовал ответ, отмеченный там, но, похоже, он не работает. Я получаю нулевой указатель на TextView после выполнения findViewById ().

Вот что я делаю:

Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter adapter = new ArrayAdapter(this,R.layout.layoutspinner,dataArray);

spinner.setAdapter(adapter);

TextView SpinnerText = (TextView)findViewById(R.id.spinnerText);
if (SpinnerText == null) {
    System.out.println("Not found");
}
else {
    SpinnerText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            //Do something
        }
    });
}

Файл layoutpinner.xml



Что я делаю не так?

Я новичок в Stack Overflow я не нашел способа опубликовать дополнительный вопрос в другой ветке (или комментарий, так как у меня мало репутации), поэтому я начал новый вопрос.

По рекомендации я попробовал следующее:

int a = spinnerMes.getCount();
int b = spinnerMes.getChildCount();
System.out.println("Count = " + a);
System.out.println("ChildCount = " + b);
for (int i = 0; i < b; i++) {
    View v = spinnerMes.getChildAt(i);
    if (v == null) {
        System.out.println("View not found");
    }
    else {
        v.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Click code
            }
        });
    }
}

Но LogCat не показывает многообещающих результатов.

10-14 16:09:08.127: INFO/System.out(3116): Count = 7
10-14 16:09:08.127: INFO/System.out(3116): ChildCount = 0

Я тестировал это на уровнях API 7 и 8 с теми же результатами.

36
задан Community 23 May 2017 в 12:18
поделиться