2
我试图从表中删除一行,并将该行下面的所有内容都向上移动一行。我根本没有成功。我已经尝试遍历所有单元格(使用Table.getCells()
)并以各种方式更新它们,但它似乎并不按照我想要的方式工作。有没有办法做到这一点?从scene2d.ui表中删除单元格
我试图从表中删除一行,并将该行下面的所有内容都向上移动一行。我根本没有成功。我已经尝试遍历所有单元格(使用Table.getCells()
)并以各种方式更新它们,但它似乎并不按照我想要的方式工作。有没有办法做到这一点?从scene2d.ui表中删除单元格
有些睡眠解决了问题!下面的示例从具有2列的表中移除第一行,并将所有其他行向上移动一步。
List<Cell> cells = table.getCells();
//Remove contents of first row
cells.get(0).setWidget(null);
cells.get(1).setWidget(null);
//Copy all cells up one row
for (int i=0;i<cells.size()-2;i++){
cells.set(i, cells.get(i+2));
}
//Remove the last row
cells.remove(cells.size()-1);
cells.remove(cells.size()-1);
一个清洁的解决方案将是下一个:
public void removeTableRow(int row) {
SnapshotArray<Actor> children = table.getChildren();
children.ordered = false;
for (int i = row*COLUMN_NUMBER; i < children.size - COLUMN_NUMBER; i++) {
children.swap(i, i + COLUMN_NUMBER);
}
// Remove last row
for(int i = 0 ; i < COLUMN_NUMBER; i++) {
table.removeActor(children.get(children.size - 1));
}
}
你尝试通过Table.layout()或Table.invalidate()去除细胞/行后更新表? – noone
是的,这对我当时正在做的事没有什么影响,但我现在就开始工作了。 – mattboy