2010-08-12 77 views
8

我有一個ExpandableListView綁定到SQLite數據庫。爲了簡化,我們假設數據庫包含兩列:titlebody。在ExpandableListView中,每個title有一個group,每個對應的body有一個childExpandableListView - 是否有條件擴展?

現在爲了讓事情更有趣,SQLite數據庫中的一些行沒有body(即......它們只有一個title)。正如你所看到的,如果沒有身體,那麼就沒有理由擴大這個羣體......因爲這個孩子將是空的(即String body == "")。

我正在尋找一種方法來捕捉這種情況,並跳過組的擴展。我不想讓一個空白的孩子擴大。把它放在僞代碼中,我想要這樣的東西:

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

有什麼建議嗎?

回答

15

訣竅在OnGroupClickListener中。下面的代碼應該工作。置於ExpandableListActivity的onCreate方法的末尾。

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

這可以在一個非常簡單和容易的方式

expListView.setEnabled(false); 

做,只要你想禁用它,然後當你的任務,以便您正在等待完成,那麼你可以調用

expListView.setEnabled(true);