2012-06-13 2 views
6

Я пытаюсь добиться чего-то подобного. Расширяемый список состоит из имен определенных категорий и при щелчке родителя отображает список всех дочерних элементов этой категории. Теперь предположим, что я хочу динамически добавлять ребенка в любую категорию? Как это сделать? Поддерживаю ли я кнопку с каждым родителем в списке, на который будет добавлен новый ребенок?Android ExpandableListView Родитель с кнопкой

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

Я нашел эту тему, но не смог ее реализовать в своем коде. Android Row becomes Unclickable with Button

+0

Как вы Наполнение список? Из курсора? С массивами? – Barak

+0

Я использую массивы. – Swayam

ответ

6

Добавление кнопки в групповой режим не должно быть так сложно.

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

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

group_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/test" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 
    <TextView 
     android:id="@android:id/text1" 
     android:layout_width="wrap_content" 
     android:layout_height="35dp" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:gravity="center_vertical" 
     android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 
    <Button 
     android:id="@+id/addbutton" 
     android:layout_width="wrap_content" 
     android:layout_height="35dp" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:text="Add" 
     android:textSize="12dp" /> 
</LinearLayout> 

Затем в getGroupView метод от адаптера:

public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 
    if (convertView == null) { 
     View convertView = View.inflate(getApplicationContext(), R.layout.group_layout, null); 
     Button addButton = (Button)convertView.findViewById(R.id.addButton); 

     addButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       // your code to add to the child list 
      } 
     }); 
    }   
    TextView textView = (TextView)convertView.findViewById(R.id.text1); 
    textView.setText(getGroup(groupPosition).toString()); 
    return convertView; 
} 
Смежные вопросы