/**
   * @param index 小于0则顺序插入(插入至最末尾);大于等于0则按指定索引值(index)插入
   * @param childView
   * @return
   */
  public boolean addChildView(int index, View childView) {
    if (childViews.contains(childView)) {
      return false;
    }

    if (null == childView.getTag()) {
      // 结构层操作
      // tag为null说明此view在添加至文件夹内之前是处于桌面上的,所以需要将其从根文件夹对象中删除
      GlobalDataCacheForMemorySingleton.getInstance
          .getRootDirectory()
          .getListFiles()
          .remove(((DragView) childView).getBookFile());
    } else {
      ((BookFolderLayout) childView.getTag()).removeChildView(childView, true);
    }

    if (null != childView.getParent()) {
      ((ViewGroup) childView.getParent()).removeView(childView);
    }

    if (index < 0) {
      childViews.add(childView);
    } else {
      childViews.add(index, childView);
    }

    // 生成缩略图控件
    BookThumbnailLayout bookThumbnailLayout = new BookThumbnailLayout(getContext());
    bookThumbnailLayout.bind((BookShelfBookCell) childView);
    childView.setTag(R.id.bookThumbnailView, bookThumbnailLayout);

    MyGridLayout.LayoutParams layoutParams = new MyGridLayout.LayoutParams();
    layoutParams.width = (int) getResources().getDimension(R.dimen.book_cell_width) / 3;
    layoutParams.height = (int) getResources().getDimension(R.dimen.book_image_height) / 3;
    layoutParams.topMargin = 4;
    layoutParams.leftMargin = 4;
    layoutParams.rightMargin = 4;
    layoutParams.bottomMargin = 4;

    // 顺序插入时,封面只显示前4本书
    if (index < 0) {
      if (gridLayout.getChildCount() < 4) {
        gridLayout.addView(bookThumbnailLayout, layoutParams);
      }
    }

    // 指定插入时,若索引值小于4则需将封面上多余的一张缩略图(即原第4张)删除
    else if (index < 4) {
      if (gridLayout.getChildCount() == 4) {
        gridLayout.removeViewAt(3);
      }
      gridLayout.addView(bookThumbnailLayout, index, layoutParams);
    }

    childView.setTag(this);

    updateFrontCover(); // 刷新封面

    return true;
  }