代码之家  ›  专栏  ›  技术社区  ›  Jaroslav Záruba

AsyncListViewAdapter+SimplePager,为什么不活动的寻呼机正在清除表?

  •  1
  • Jaroslav Záruba  · 技术社区  · 15 年前

    编辑:这似乎是 a bug .

    我正在努力使CellTable与 异步列表视图适配器 <t>和simplepager<t>。数据会被显示出来,但是当寻呼机应该是“聋的”(意味着当所有现有数据都显示出来时),它仍然会收到点击,更重要的是,会使显示的数据消失。而不是我的数据“加载”指示器会被显示,它会继续加载和加载…显然没有加载任何内容,因为它甚至不调用onRangeChanged处理程序。

    我在 this thread 但我对我所做的一切没有任何怀疑。

    对新手的错误有什么明显的答案吗?

    我缩小了变量名,希望它不会包装太多。

    protected class MyAsyncAdapter
      extends AsyncListViewAdapter<DTO> {
      @Override
      protected void onRangeChanged(ListView<DTO> v) {
        /*
         * doesn't even get called on [go2start/go2end] click :(
         */
        Range r = v.getRange();
        fetchData(r.getStart(), r.getLength());
      }
    }
    
    private void addTable() {
      // table:
      CellTable<DTO> table = new CellTable<DTO>(10);
      table.addColumn(new Column<DTO, String>(new TextCell()) {
          @Override
          public String getValue(DTO myDto) {
            return myDto.getName();
          }
        }, "Name");
    
      // pager:
      SimplePager<DTO> pager = new SimplePager<DTO>(table);
      table.setPager(pager);
    
      adapter = new MyAsyncAdapter();
      adapter.addView(table);
      // does not make any difference:
      // adapter.updateDataSize(0, false);
      // adapter.updateDataSize(10, true);
    
      VerticalPanel vPanel = new VerticalPanel();
      vPanel.add(table);
      vPanel.add(pager);
      RootLayoutPanel.get().add(vPanel);
    }
    
    // success-handler of my fetching AsyncCallback
    @Override
    public void onSuccess(List<DTO> data) {
      // AsyncCallback<List<DTO>> has start field
      adapter.updateViewData(start, data.size(), data);
      if(data.size() < length)
        adapter.updateDataSize(start + data.size(), true);
    }
    

    当做
    J.Z·Z·鲁巴

    1 回复  |  直到 14 年前
        1
  •  1
  •   Jaroslav Záruba    15 年前

    显然是因为 a bug .