2010-08-12 75 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);