2010-08-12 11 views
8

Tengo un ExpandableListView vinculado a una base de datos SQLite. Para simplificar las cosas, supongamos que la base de datos contiene dos columnas: title y body. En el ExpandableListView, hay un group para cada title, y un child para cada body correspondiente.ExpandableListView - ¿Es posible la expansión condicional?

Ahora, para hacer las cosas más interesantes, algunas de las filas en la base de datos SQLite no tienen un body (es decir ... solo tienen un title). Como puede ver, si no hay un cuerpo, entonces no hay razón para expandir el grupo ... porque el niño estará vacío (por ejemplo, String body == "").

Estoy buscando una manera de atrapar una situación como esta y omitir la expansión del grupo. No quiero que se expanda un niño en blanco. Para ponerlo en código psuedo, quiero algo como esto:

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

¿Alguna sugerencia?

Respuesta

15

El truco está en OnGroupClickListener. El siguiente código debería funcionar. Ponga al final de su método onCreate para 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

Esto se puede hacer de una manera muy simple y fácil

expListView.setEnabled(false); 

cada vez que desee desactivarla, y luego, cuando su tarea, para la que está esperando está completa, podrá llamar

expListView.setEnabled(true); 
Cuestiones relacionadas