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;
  }