问题
自定义cellfactory,listview绑定了ObservableList,第一次初始化后,通过交互删除listview中的item后刷新listview,出现item重复显示。查看listview,显示item成功移除
解决
在cellfactory中,empty为空时,设置setGraphic(null),即
if (empty == false && item!=null) {
//cellfactory的自定义渲染内容
}else if(empty){
this.setGraphic(null);
}
可能的原因
使用refresh,会再次调用cellfactory进行渲染,此时item删除后,被删除行的item为null,empty为true,实际上被删除行没有进入重新渲染(setGraphic),依然会保持上次的渲染结果,行上提就可能造成重复显示,此时需要重新把被删除行渲染为null