代码之家  ›  专栏  ›  技术社区  ›  Adarsha

网格中列中的项数

  •  1
  • Adarsha  · 技术社区  · 14 年前

    如何在网格中找到列中的项数?

    我有一个网格(具体来说是listview控件),还有一些项。 有时给定的行可能没有满。并且可以在小于最大值的列中包含值。我需要在给定的列中找到项数。

    如果网格像

    1   2   3
    4   5   6
    7       
    

    我有ItemCount、CoulmnCount和RowCount的变量来跟踪项目、行和列的数量。

    int iItemCount=0,iItemInColumn=0;
    for(int iCol=0;iCol<iColumnCount;iCol++)
        for(int iRow=0;iRow<iRowCount;iRow++,iItemCount++)
            if(iCol==iInputCol && iItemCount<iTotalItems)
                iItemInColumn++;
    

    你们能想出一种不需要循环的方法吗?可能只利用3个变量,我已经有跟踪?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Sheldon L. Cooper    14 年前

    假设基于0的索引:

    def itemsInColumn(itemCount, columnCount, inputColumn):
      lastItemColumn = (itemCount - 1) % columnCount
      if inputColumn <= lastItemColumn:
        return (itemCount + columnCount - 1) / columnCount
      else:
        return itemCount / columnCount
    

    它取决于项目总数(itemCount)和列数(columnCount)。它只计算itemCount/columnCount,并根据输入列是否小于或等于最后一个项的列进行上舍入或下舍入。

    计算“(itemCount+columnCount-1)/columnCount”只是使用整数除法进行取整的技巧。一般来说,给定正整数a和b:ceil(a/b)=(a+b-1)div b,其中div是整数除法。