2009-11-05 10 views
5

Próbuję umieścić pole wyboru w ExpandableListView. Jak mogę to zrobić? Rozszerzam BaseExpandableListAdapter i umieszczam w getGroupView():Android - bloki CheckBox ExpandableListView.OnGroupClickListener

@Override 
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, 
    ViewGroup parent) { 
    View view = convertView == null ? 
     context.getLayoutInflater().inflate(R.layout.onet_head, null) : convertView; 
    ((TextView)view.findViewById(R.id.onetText)).setText(cats.get(groupPosition).value); 
    return view; 
} 

Zauważ, że układ jest zawyżony? Właśnie tam umieszczam TextView i CheckBox. Zauważyłem, że umieszczenie pola wyboru w moim layoucie wiersza grupy wyłącza funkcję domyślnego wiersza grupy, gdy kliknięcie wiersza powoduje wyświetlenie listy pomocniczej (potomnej). CheckBox działa zgodnie z oczekiwaniami, ale po kliknięciu poza nim kliknięcie nigdy nie jest wykrywane przez eter CheckBox ani przez OnGroupClickListener. Podejrzewam, że umieszczenie CheckBoxa w rzędzie grupowym w ten sposób przeszkadza w wykryciu zdarzenia/obsłudze, ale do tej pory nie jestem w stanie go wykryć.

Czy ktoś może mi pomóc rozwiązać ten problem? CheckBox działa dobrze, ale obejmuje także wykrywanie kliknięć, gdy kliknięcie bezpośrednio na polu

Odpowiedz

10

Za każdym razem, gdy umieścisz element, który można ustawić na liście, elementy listy przestają odpowiadać na kliknięcia lub coś w tym stylu. Dla każdego przedmiotu, który umieścisz w elemencie listy, który można ustawić (przyciski, pola wyboru itp.), Musisz ustawić atrybut android: focusable na false.

Miałem podobne pytanie i to była dla mnie odpowiedź. Android custom ListView unable to click on items

+0

Matt! Dziękuję bardzo, to rzeczywiście rozwiązało problem. – Bostone

+0

Moja przyjemność. Ten przez długi czas doprowadzał mnie do szału. – MattC

+0

Tego rodzaju problemy sprawiają, że tworzenie aplikacji na Androida staje się frustrujące. (I TAK bezcenne :) – Nilzor