これは、選択によって行が再レンダリングされるために発生します。したがって、この要素に加えた変更はすべて失われます。
このために私が見つけた回避策は、個々のセルレベルでそれを処理することです。
実際には、各セルを「StyleAwareCellDecorator」にラップして、特定のスタイルでスパンを作成します。次に、いくつかのロジックに基づいて、適用するスタイルを決定します。あなたの場合、それはcontext.getIndex()に基づいている可能性があります。
public class StyleAwareCellDecorator<C> extends AbtractCell<C> {
private final Cell<C> decorated;
private final MyLogic logic;
public StyleAwareCellDecorator( Cell<C> decorated, MyLogic logic ) {
this.decorated = decorated;
this.logic = logic;
}
void render(Context context, C value, SafeHtmlBuilder sb) {
String theCssClass = myLogic.decideWhatStyleToUse( context.getIndex() );
sb.append( ... some tag with class="theCssClass" ... );
delegated.render( context, value, sb );
sb.append( ... close tag ... );
}
}
この機能を使用すると、コードを次のように置き換えることができます。
MyLogic myCellStyleLogic;
myCellStyleLogic.useStyleForRowIndex( "style-name-A", 0 );
myCellStyleLogic.useStyleForRowIndex( "style-name-B", 1 );
そしてそれを地図に保存するとしましょう