gpt4 book ai didi

java - GWT CellList 渲染完成处理程序?

转载 作者:行者123 更新时间:2023-12-01 13:40:17 24 4
gpt4 key购买 nike

我使用 GWT CellList 小部件来呈现 Cell 元素。

有没有办法注册渲染完成或渲染完成事件以在渲染完成后执行内容?

最佳答案

我有同样的问题,并查看了代码,我找到了可能的解决方案。

HasDataPresenter中,有将单元格渲染到 View 中的代码(方法resolvePendingState(JsArrayInteger moddedRows):

if (redrawRequired) {
// Redraw the entire content.
SafeHtmlBuilder sb = new SafeHtmlBuilder();
view.replaceAllChildren(newState.rowData, selectionModel, newState.keyboardStealFocus);
view.resetFocus();
} else if (range0 != null) {
// Surgically replace specific rows.

// Replace range0.
{
int absStart = range0.getStart();
int relStart = absStart - pageStart;
SafeHtmlBuilder sb = new SafeHtmlBuilder();
List<T> replaceValues = newState.rowData.subList(relStart, relStart + range0.getLength());
view.replaceChildren(replaceValues, relStart, selectionModel, newState.keyboardStealFocus);
}

// Replace range1 if it exists.
if (range1 != null) {
int absStart = range1.getStart();
int relStart = absStart - pageStart;
SafeHtmlBuilder sb = new SafeHtmlBuilder();
List<T> replaceValues = newState.rowData.subList(relStart, relStart + range1.getLength());
view.replaceChildren(replaceValues, relStart, selectionModel, newState.keyboardStealFocus);
}

view.resetFocus();

view.replaceAllChildren(....) 方法调用渲染单元格的 render 方法,完成后会触发 ValueChangeEvent()。

@Override
public void replaceAllChildren(....) {
SafeHtml html = renderRowValues(...);

....

fireValueChangeEvent();
}

因此,在您的 cellList 中,您应该执行以下操作:

   cellList.addHandler(new ValueChangeHandler<List<IPost>>() {

@Override
public void onValueChange(ValueChangeEvent<List<IPost>> event) {
//Do something
//Be careful because this handler could be called from other methods

}
}, ValueChangeEvent.getType());

关于java - GWT CellList 渲染完成处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20870082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com