private void mapIndexAndColumns() { if (mColumnToChildIndex == null) { int virtualCount = 0; int count = getChildCount(); mColumnToChildIndex = new android.util.SparseIntArray(); android.util.SparseIntArray columnToChild = mColumnToChildIndex; { for (int i = 0; i < count; i++) { android.view.View child = getChildAt(i); android.widget.TableRow.LayoutParams layoutParams = (android.widget.TableRow.LayoutParams )child.getLayoutParams(); if (layoutParams.column >= virtualCount) { virtualCount = layoutParams.column; } { for (int j = 0; j < layoutParams.span; j++) { columnToChild.put(virtualCount++, i); } } } } mNumColumns = virtualCount; } }