//Will be called by the TableView when a cell's visibility changed
 public void TableViewCellVisibilityChanged(int row, bool isVisible)
 {
     //Debug.Log(string.Format("Row {0} visibility changed to {1}", row, isVisible));
     if (isVisible)
     {
         MoreAppCell cell = (MoreAppCell)tableView.GetCellAtRow(row);
         cell.NotifyBecameVisible();
     }
 }
    //Will be called by the TableView when a cell needs to be created for display
    public TableViewCell GetCellForRowInTableView(TableView tableView, int row)
    {
        MoreAppCell cell = tableView.GetReusableCell(cellPrefab.reuseIdentifier) as MoreAppCell;

        if (cell == null)
        {
            cell      = (MoreAppCell)GameObject.Instantiate(cellPrefab);
            cell.name = "GuankaItemCellInstance_" + (++numInstancesCreated).ToString();
            Rect    rccell      = (cellPrefab.transform as RectTransform).rect;
            Rect    rctable     = (tableView.transform as RectTransform).rect;
            Vector2 sizeCell    = (cellPrefab.transform as RectTransform).sizeDelta;
            Vector2 sizeTable   = (tableView.transform as RectTransform).sizeDelta;
            Vector2 sizeCellNew = sizeCell;
            sizeCellNew.x = rctable.width;
            //(cell.transform as RectTransform).sizeDelta = sizeCellNew;
            cell.SetCellSize(sizeCellNew);

            //Debug.LogFormat("TableView Cell Add Item:rcell:{0}, sizeCell:{1},rctable:{2},sizeTable:{3}", rccell, sizeCell, rctable, sizeTable);
            //oneCellNum = (int)(rctable.width / rccell.height);
            //int i =0;

            for (int i = 0; i < oneCellNum; i++)
            {
                // GameObject obj = (GameObject)Resources.Load("Prefab/MoreApp/MoreAppCellItem");
                // MoreAppCellItem item = obj.GetComponent<MoreAppCellItem>();
                MoreAppCellItem item = cellItemPrefab;

                item = (MoreAppCellItem)GameObject.Instantiate(item);
                Rect rcItem = (item.transform as RectTransform).rect;

                item.transform.SetParent(cell.transform, false);
                item.index = row * oneCellNum + i;
                // LayoutElement layoutElement = item.GetComponent<LayoutElement>();
                // if (layoutElement == null) {
                //     layoutElement = item.gameObject.AddComponent<LayoutElement>();
                // }
                // layoutElement.preferredWidth =160;// GetHeightForRowInTableView(tableView,row);
                //  item.transform.SetSiblingIndex(1);


                RectTransform rectTransform = item.GetComponent <RectTransform>();
                //RectTransform rectTransform = item.transform as RectTransform;
                // Vector2 size = rectTransform.sizeDelta * scaleUI;
                Vector3 pos = new Vector3(rcItem.width * i, 0, 0);

                // rectTransform.position = pos;
                rectTransform.anchoredPosition = pos;
                cell.AddItem(i, item);


                Vector2 sizeItem = (item.transform as RectTransform).sizeDelta;
                //Debug.LogFormat("TableView Item:rcItem:{0}, sizeItem:{1},rectTransform.position:{2}", rcItem, sizeItem, rectTransform.position);
                rcItem.x = 0;
                rcItem.y = 0;
                // (item.transform as RectTransform).rect = rcItem;
            }
        }

        int cellNumCur = oneCellNum;

        if (row == GetNumberOfRowsForTableView(tableView) - 1)
        {
            cellNumCur = listAppMore.Count - (GetNumberOfRowsForTableView(tableView) - 1) * oneCellNum;
        }

        cell.SetRowNumber(row, oneCellNum, cellNumCur);
        cell.UpdateItem(listAppMore);
        return(cell);
    }