2012-06-13 15 views
6

Próbuję osiągnąć coś takiego. Lista rozwijana składa się z nazw niektórych kategorii, a po kliknięciu na rodzica pokazuje listę wszystkich dzieci w tej kategorii. Załóżmy teraz, że chcę dynamicznie dodawać dziecko do dowolnej kategorii? Jak to zrobić? Czy trzymam przycisk z każdym rodzicem na liście, klikając, który z nich miałby dodać nowe dziecko?Android ExpandableListView Rodzic za pomocą przycisku

Ale rozglądając się na różnych forach, uświadomiłem sobie, że nie jest łatwo ustawić obsługę przycisku kliknięcia wewnątrz każdego rodzica. Ale jeśli to jedyny sposób, czy ktoś może mi podać przykładowy kod?

Znalazłem ten wątek, ale nie udało mi się go wdrożyć w moim kodzie. Android Row becomes Unclickable with Button

+0

Jak się zapełniać listy? Z kursora? Z tablicami? – Barak

+0

Używam tablic. – Swayam

Odpowiedz

6

Dodanie przycisku do widoku grupowego nie powinno być trudne.

Wierzę, że poniższy kod powinien zadziałać (chociaż nie mam projektu korzystającego z tablicy z rozszerzeniem rozwijanym, do którego można testować).

Nie znam twojego układu wierszy grupy, więc utworzę go tutaj w celach informacyjnych.

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> 

Następnie w metodzie getGroupView z adaptera:

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; 
} 
Powiązane problemy