1

私は、次のものを入力しているCellListを持っていますAsyncDataProvider:

  @UiField(provided = true)
  CellList<PlayerDataEntity> friendCellList;


  @Inject
  FriendListViewImpl(FriendListController controller) {
    friendCellList = new CellList<PlayerDataEntity>(new PlayerCell());

    initWidget(uiBinder.createAndBindUi(this));

    // if we don't set the row data to empty before trying to get the real data,
    // the empty list widget will never appear. But if we do set this, 
    // then the real data won't show up. 
    friendCellList.setRowData(Lists.<PlayerDataEntity>newArrayList());

      new AsyncDataProvider<PlayerDataEntity>() {
        @Override
        protected void onRangeChanged(final HasData<PlayerDataEntity> display) {
          rpcService.getPlayers(new AsyncCallback<List<PlayerDataEntity>>() {
              @Override
              public void onSuccess(List<PlayerDataEntity> result) {
                 display.setRowData(0, result);
              }
            });
      }
    }.addDataDisplay(friendCellList);

    friendCellList.setEmptyListWidget(new Label("No friends found"));
  }

最初に行データを空のリストに設定しないと、RPC サービスが空のリストを返しても、空のリスト ウィジェットは表示されません。ただし、最初に行データを空のリストに設定し、RPC が空でないリストを返すと、そのデータはウィジェットに表示されません。

CellListの API のいくつかの側面を誤解しているに違いありません。私は何を間違っていますか?

4

2 に答える 2

2

リスト全体 (範囲内のリストだけでなく) が空であることがわかっている場合は、 を設定できるdisplay.setRowCount(0)ため、CellList に「友達が見つかりません」と表示されます。

サービスが常にリスト全体を返す場合、これは次のように簡単に実行できます

public void onSuccess(List<PlayerDataEntity> result) {
  display.setRowCount(result.size());
  display.setRowData(0, result);
}
于 2012-05-13T11:18:27.953 に答える
0

メソッドに次の行を追加します。

@Override
public void onSuccess(List<PlayerDataEntity> result) {
   display.setRowData(0, result);
   ((CellList<PlayerDataEntity>) display).redraw();
}
于 2012-05-12T21:23:22.603 に答える