2011-12-21 2 views
2

Я использовал код, приведенный в учебнике http://mylifewithandroid.blogspot.com/2010/12/expandable-list-and-checkboxes.html Я приложил изображение ExpandableListView enter image description hereДобавления слушателя к дочерним узлам в расширяемой Пункт

SimpleExpandableListAdapter expListAdapter = 
     new SimpleExpandableListAdapter(
      this, 
      createGroupList(), 
      R.layout.child_row, 
      new String[] { "CityName" }, 
      new int[] { R.id.childname },  
      createChildList(), 
      R.layout.child_row, 
      new String[] { "citydetails", "city" }, 
      new int[] { R.id.childname, R.id.city} 
     ); 

    setListAdapter(expListAdapter); 

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

ответ

1

Вы также можете иметь свою деятельность переопределить метод onChildClick:

@Override 
public boolean onChildClick(ExpandableListView expandableListView, View view, int groupPosition, int childPosition, long id) { 
    //implement logic to start the appropriate activity for this child. 
} 

От андроида сайта Dev: onChildClick.

Я также рекомендую загрузить API Demos. Вы можете узнать больше об установке here.

+1

AFAIK, этот метод работает только в том случае, если вы пытаетесь щелкнуть элемент списка, т.е. целую строку. Если ваша строка состоит из нескольких видов, этот метод не идентифицирует дочерний элемент (группы просмотра в строке), который был нажат. Он вызывается со ссылкой на содержащую ViewGroup. Чтобы проиллюстрировать, скажем, ваша строка состоит из 'LinearLayout'' root' с двумя 'TextView'' child1' и 'child2'. Если мы нажмем на 'child1', вызывается' onChildClick', но с ссылкой на 'root' not' child1', как мы могли подумать. –

+0

Спасибо за информацию Manish. Мне еще нужно создать расширяемый список с дочерними элементами, которые имеют несколько кликов. – Scott

+0

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

1

AFAIK, вы не можете добавить слушателя в свои дочерние представления, используя приведенный выше пример. У вас должен быть собственный адаптер. В этом пользовательском адаптере getChildView и getGroupView вы можете предоставить своих собственных слушателей. Например.

public View getGroupView(
      int groupPosition, 
      boolean isExpanded, 
      View convertView, 
      ViewGroup parent) { 

     ViewGroup viewGroup = null; 
     if (convertView == null) { 
      LayoutInflater li = (LayoutInflater) getApplication().getSystemService(LAYOUT_INFLATER_SERVICE); 
      if (li != null) { 
       viewGroup = (ViewGroup) li.inflate(R.layout.listitems_group, parent, false); 
      } 
     } else { 
      viewGroup = (ViewGroup) convertView; 
     } 

      Button button = (Button) viewGroup.findViewById(R.id.group_button); 
      button.setOnClickListener(new OnClickListener() { 
       void onClick(View v) { 
        // Do what you want here 
       } 
      }); 
      return viewGroup; 
} 

Здесь у меня есть кнопки в моем GroupView, для которых я хочу добавить onClick для прослушивания.

+0

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

+0

Да, я имею в виду именно это. Посмотрите эту несколько связанную тему: http://stackoverflow.com/questions/2568086/what-adapter-to-use-for-expandablelistview-with-non-textview-views –

+0

, что Скотт дал ниже, но вопрос в том, как получить текст из этого дочернего узла ... – Mukunda

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