Справка GWT uiBinder.createAndBindUi (this) - PullRequest
0 голосов
/ 05 января 2011

Я новичок в плагинах Java GWT.

В нашем коде мы используем код, подобный приведенному ниже,

В test1.java

public class RowResults extends Composite
{

   @UiField VerticalPanel vpnlWidgets;

   public RowResults()
   {

 uiBinder.createAndBindUi(this)); 
 getRows();
   }

   private void getRows()
   {

      for(RowDetails obj: RowDetailsArray)
      {
         RowWidget row= new RowWidget(obj);
      vpnlWidgets.add(row);
      }
   }
}

В test2.java

public RowWidget(RowDetails rowObj)
{

       uiBinder.createAndBindUi(this);  
       this.Row = rowObj;
}

Я разместил здесь необходимый код. В этом коде, если в RowDetailsArray есть 10 элементов, то для каждого элемента вызывается createAndBindUi. Кажется, тоже немного медленно.

Есть ли способ вызвать uiBinder.createAndBindUi (this); функционируйте один раз и используйте это для всех 10 элементов.

Кроме того, что произойдет при вызове createAndBindUi (this). Преобразует ли он файл ui.xml в файл класса или что-то еще.

Пожалуйста поправьте меня, если я ошибаюсь.,

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2012

Используйте этот формат кода.

public class RowResults extends Composite{
    private static RowResultsUiBinder uiBinder = GWT.create(RowResultsUiBinder.class);
interface RowResultsUiBinder  extends UiBinder<Widget, RowResults> {}
    public RowResults(){
        initWidget( uiBinder.createAndBindUi( this ) );
        // put all your code here if you do not have any other constructor if you have put
        //the above line in that constructor in the begning.
}
0 голосов
/ 08 января 2011

Полагаю, это зависит от того, насколько сложен ваш RowWidget. Если у него нет специальных стилей, я бы предложил использовать вместо него FlexTable и просто вставить в него строки. Это довольно оптимизировано.

...