private void addTile(String tile) {
    // Add the new tile to the last available position before "Add / Delete" tile
    int newPosition = mDraggableGridView.getChildCount() - 1;
    if (newPosition < 0) newPosition = 0;

    mDraggableGridView.addView(buildQSTile(tile), newPosition);
    updateAddDeleteState();
    updateSettings();
  }
  private void rebuildTiles() {
    mDraggableGridView.resetState();
    String order =
        Settings.Secure.getString(getActivity().getContentResolver(), Settings.Secure.QS_TILES);
    if (order == null) {
      order = resetTiles(getActivity());
    }

    if (!TextUtils.isEmpty(order)) {
      for (String tileType : order.split(",")) {
        View tile = buildQSTile(tileType);
        if (tile != null) {
          mDraggableGridView.addView(tile);
        }
      }
    }
    // Add a dummy tile for the "Add / Delete" tile
    mAddDeleteTile = buildQSTile(QSTileHolder.TILE_ADD_DELETE);
    mDraggableGridView.addView(mAddDeleteTile);
    updateAddDeleteState();
  }