private void arrangeChildren(ArrayList<View> list) { int[] vacant = new int[2]; if (list == null) { list = getItemsInReadingOrder(); } mContent.removeAllViews(); for (int i = 0; i < list.size(); i++) { View v = list.get(i); mContent.getVacantCell(vacant, 1, 1); CellLayout.LayoutParams lp = (CellLayout.LayoutParams) v.getLayoutParams(); lp.cellX = vacant[0]; lp.cellY = vacant[1]; ItemInfo info = (ItemInfo) v.getTag(); if (info.cellX != vacant[0] || info.cellY != vacant[1]) { info.cellX = vacant[0]; info.cellY = vacant[1]; LauncherModel.addOrMoveItemInDatabase(mLauncher, info, mInfo.id, 0, info.cellX, info.cellY); } boolean insert = false; mContent.addViewToCellLayout(v, insert ? 0 : -1, (int) info.id, lp, true); } mItemsInvalidated = true; }