2012-05-28 2 views
0

В настоящее время я использую пользовательский макет для дочернего объекта в Expandablelist, который включает в себя 2 разных текстовых вида и изображение. Также он всегда будет иметь 1 ребенка каждый раз. Я могу получить clicklistener в адаптере, но не могу получить это в своей деятельности.Как получить clicklistener для textview в child для расширяемого списка?

Я также попытался получить событие прослушивателя кликов в методе onChildClick(), но он не работал.

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

Любые предложения, пожалуйста.

ответ

2

Я могу получить это сделали ребята, я добавил android:onClick="textClickHandler"> в файл макета и включал в себя слушателя, как показано ниже в моей деятельности:

public void textClickHandler(View view){ 

     if(view.getId() == R.id.textMore){ 
      Toast.makeText(mContext, "More Text Clicked.", Toast.LENGTH_LONG).show(); 
     } 
    } 
+0

Это будет работать только если вы не волнует, что ' TextView' из «ExpandableListView» был нажат (от ребенка в позиции 0, от ребенка в позиции 7 и т. Д.). – Luksprog

+0

@Luksprog - Да, это то, что я хочу, как упоминалось в моей постановке проблемы. У меня есть только один ребенок в списке. Спасибо за указание на это. Я попробую ваше решение тоже для списка потомков позже. – Bir

1

Вы не можете установить слушателя на View с Activity (если я понял, что вы пытаетесь сделать). Один из способов сделать это было бы:

  • сделать ваш адаптер имеет значение boolean, который вы установили при создании экземпляра адаптера (Это скажет вам, если адаптер принадлежит к Activity где TextView должен иметь слушателя (например, для true). Если значение false, то вы не должны устанавливать прослушиватель на TextView).
  • установить слушателя на нужный TextView (только если предыдущее значение было true, для других действий вы просто проигнорируете эту часть) в методе getChildView вашего пользовательского адаптера.
  • в методе onClick для этого вида OnCLickListener используется Context, который вы передаете в конструкторе вашего адаптера. Передайте его желаемой активности и используйте ее по своему усмотрению. Более элегантный способ сделать это - позволить желаемому Activity реализовать пользовательский интерфейс (чтобы уведомить вас, когда был нажат TextView). Затем в адаптере создайте поле с типом этого интерфейса, которое вы укажете на Activity при создании экземпляра слушателя. Когда нажата кнопка TextView, вызовите методы этого поля выше и сообщите Activity, что что-то происходит, и это должно сделать что-то.

 Смежные вопросы

  • Нет связанных вопросов^_^