2010-08-12 5 views
8

У меня есть ExpandableListView, привязанный к базе данных SQLite. Чтобы упростить ситуацию, предположим, что база данных содержит два столбца: title и body. В ExpandableListView имеется group для каждого title и child для каждого соответствующего body.ExpandableListView - Возможно ли условное расширение?

Теперь, чтобы сделать вещи более интересными, некоторые строки в базе данных SQLite не имеют body (то есть ... у них есть только title). Как вы можете видеть, если тела нет, тогда нет причин для расширения группы ... потому что ребенок будет пустым (т. Е. String body == "").

Я ищу способ поймать подобную ситуацию и пропустить расширение группы. Я не хочу, чтобы пустой ребенок расширялся. Чтобы выразить это в коде psuedo, я хочу что-то вроде этого:

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

Любые предложения?

ответ

15

Хитрость в OnGroupClickListener. Следующий код работает. Поместите в конец метода onCreate для 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

Это может быть сделано в очень простой и легкой манере

expListView.setEnabled(false); 

всякий раз, когда вы хотите, чтобы отключить его, а затем, когда ваша задача, для которой вы ждете завершения, то вы можете позвонить

expListView.setEnabled(true);