package org.itsnat.droid.impl.xmlinflater.layout.attr.widget; import android.view.View; import android.widget.TableLayout; import android.widget.TableRow; import org.itsnat.droid.impl.dom.DOMAttr; import org.itsnat.droid.impl.xmlinflater.layout.AttrLayoutContext; import org.itsnat.droid.impl.xmlinflater.layout.PendingPostInsertChildrenTasks; import org.itsnat.droid.impl.xmlinflater.layout.PendingViewPostCreateProcess; import org.itsnat.droid.impl.xmlinflater.layout.classtree.ClassDescViewBased; import org.itsnat.droid.impl.xmlinflater.shared.attr.AttrDesc; /** * Created by jmarranz on 30/04/14. */ public class AttrDescView_widget_TableLayout_collapseColumns extends AttrDesc<ClassDescViewBased,View,AttrLayoutContext> { public AttrDescView_widget_TableLayout_collapseColumns(ClassDescViewBased parent) { super(parent,"collapseColumns"); } @Override public void setAttribute(final View view, final DOMAttr attr, AttrLayoutContext attrCtx) { final TableLayout tableView = (TableLayout)view; PendingViewPostCreateProcess pendingViewPostCreateProcess = attrCtx.getPendingViewPostCreateProcess(); if (pendingViewPostCreateProcess == null) // Si es no nulo es que estamos creando el TableLayout y no hace falta ésto { int maxColumns = getMaxColumns((TableLayout) view); for (int i = 0; i < maxColumns; i++) { if (tableView.isColumnCollapsed(i)) tableView.setColumnCollapsed(i, false); } } Runnable task = new Runnable() { @Override public void run() { String value = attr.getValue(); if ("".equals(value)) { int maxColumns = getMaxColumns((TableLayout) view); for (int i = 0; i < maxColumns; i++) { if (tableView.isColumnCollapsed(i)) tableView.setColumnCollapsed(i, false); } } else { String[] columns = value.split(","); for (int i = 0; i < columns.length; i++) { String columnStr = columns[i]; int column = Integer.parseInt(columnStr); tableView.setColumnCollapsed(column, true); } } } }; PendingPostInsertChildrenTasks pendingPostInsertChildrenTasks = attrCtx.getPendingPostInsertChildrenTasks(); if (pendingPostInsertChildrenTasks != null) pendingPostInsertChildrenTasks.addTask(task); else task.run(); } @Override public void removeAttribute(View view, AttrLayoutContext attrCtx) { setAttributeToRemove(view, "", attrCtx); } private static int getMaxColumns(TableLayout view) { int maxColumns = 0; int childCount = view.getChildCount(); for(int i = 0; i < childCount; i++) { View child = view.getChildAt(i); if (child instanceof TableRow) { int columns = ((TableRow)child).getChildCount(); if (columns > maxColumns) maxColumns = columns; } } return maxColumns; } }