android - BaseExpandableListAdapter-deshabilita onclick para elementos de grupo sin hijos
(2)
He recurrido a desactivar los indicadores de grupo utilizando (en una ExpandableListActivity
, hágalo manualmente en su lista si tiene una Actividad regular):
getExpandableListView().setGroupIndicator(null);
Luego, en su método getGroupView()
que está implementando, compruebe si el grupo al que está a punto de hacer una vista tiene hijos (estoy usando una Lista de Listas para el mío así que es bastante sencillo) y ajuste la vista del grupo en consecuencia (haga su propio botón de expansión tal vez). Es posible que tenga que jugar con los ajustes padre y convertView para ver qué funciona mejor para usted.
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
convertView = inflater.inflate(
android.R.layout.simple_expandable_list_item_1, parent,
false);
if (groups.get(groupPosition).getMuscles().size() == 0) {
convertView.setEnabled(false); //Greys out group name
}
Estoy trabajando para implementar un ExpandableListAdapter.
Caso de uso:
Tengo elementos de grupo que quiero agregar a la lista desplegable sin hijos. El problema es que se puede hacer clic en cada elemento del grupo, incluso si no contienen elementos secundarios.
¿Hay alguna forma de desactivar / atenuar el botón expandible para indicar al usuario que no contiene elementos secundarios?
En este momento lo he implementado:
public void onGroupExpanded(int groupPosition) {
if (!containsChildren(groupPosition)) {
Toast.makeText(context, context.getString(R.string.err_no_children), Toast.LENGTH_LONG).show();
}
}
Prefiero tener un visual como se mencionó anteriormente (desactivar / grisar el botón expandible) y mostrar este Toast si hacen clic en él. Porque en el momento en que puede hacer clic en groupItem, intenta expandir cero elementos, lo que parece tonto. ¿O es este buen comportamiento predeterminado de MMI [1]?
Hay otra forma de hacerlo estableciendo en onGroupClickListener
y devolviendo true para los grupos que no tienen hijos.
myExpandableList.setOnGroupClickListener(new OnGroupClickListener(){
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id){
// TODO Auto-generated method stub.
if(!myAdapter.containsChildren(groupPosition)){
return true;
}else{
return false;
}
}});