2010-08-12 12 views
8

Mam ExpandableListView powiązane z bazą danych SQLite. Aby uprościć wszystko, załóżmy, że baza danych zawiera dwie kolumny: title i body. W ExpandableListView jest group dla każdego title i child dla każdego odpowiadającego body.ExpandableListView - Czy możliwe jest rozszerzenie warunkowe?

Teraz, aby było ciekawiej, niektóre wiersze w bazie danych SQLite nie mają wartości body (czyli ... mają tylko title). Jak widać, jeśli nie ma ciała, nie ma powodu, aby rozszerzać grupę ... ponieważ dziecko będzie puste (tj. String body == "").

Szukam sposobu na złapanie takiej sytuacji i pominięcie rozszerzenia grupy. Nie chcę, aby puste dziecko zostało rozszerzone. Aby umieścić go w kodzie pseudo, chcę coś takiego:

if (body.getText() == "") { 
    //DO NOT EXPAND 
    //DO OTHER STUFF 
} 

Wszelkie sugestie?

Odpowiedz

15

Sztuczka znajduje się w OnGroupClickListener. Poniższy kod działa. Umieść na końcu metody onCreate dla ExpandableListActivity.

lv.setOnGroupClickListener(new OnGroupClickListener() { 

    @Override 
    public boolean onGroupClick(ExpandableListView parent, View v, 
     int groupPosition, long id) { 

    Cursor c = mDbHelper.fetchRow(id); //Get Title & body from SQLite table 
    if (c.getString(Constants.bodyColumn).equals("")) { 
     //If the body returned from SQLite is empty, return true 
     return true; //True means the click HAS been handled. 
    } 
    return false; //Click has not been handled, so let Android expand here. 
    } 
}); 
0

Można to zrobić w bardzo prosty i łatwy sposób

expListView.setEnabled(false); 

gdy chcesz go wyłączyć, a następnie, gdy zadanie, na które czekasz jest kompletna, to możesz zadzwonić

expListView.setEnabled(true); 
Powiązane problemy