我有一个TableView,我正在努力使它当我点击一行时,上面的所有行将改变他们的风格(变成灰色)。我创建了一个自定义TableCell,其updateItem方法如下所示。 # Controller
...
def index
peoples = People.where(hidden_flag: false)
render json: peoples.as_json
end
CSS类有一些重要的属性。
在每个updateItem上,我检查行索引是高于还是低于某个阈值,然后应用或删除样式类。
一切正常,直到我滚动;当我向上滚动时,所有内容都应用了应用的样式。但是,当我向下滚动时,随机行会应用样式,而其他行则不会。
奇怪的是,如果我使用setStyle()应用样式,一切都能正常工作。
Custom Table Cell片段:
.row-to-ignore
CSS文件:
@Override protected void updateItem(String cellItem, boolean empty) {
super.updateItem(cellItem, empty);
if (cellItem != null) {
setText(cellItem);
// Apply styling depending on whether the row is selected as not-data.
if ((this.getTableRow().getIndex()) < mHighlightIndex)
{
// Apply "ignore" styling.
this.getStyleClass().add("row-to-ignore");
} else {
// Remove ignore styling.
this.getStyleClass().remove(".row-to-ignore");
}
} else {
setText("");
}
}
答案 0 :(得分:3)
我在post找到了答案。事实证明,我正在使用样式类将该类的多个副本添加到列表中。删除课程的所有副本使问题消失。
我改变了这个:
// Apply "ignore" styling.
this.getStyleClass().add("row-to-ignore");
到此:
// Apply "ignore" styling. Make sure not to add duplicate copies of class to style list.
if (!this.getStyleClass().contains("row-to-ignore")) {
this.getStyleClass().add("row-to-ignore");
}