Hi. I'm working on a project with GWT 2.1 and mvp4g. In a view, I'm using a CellList backed with a ListDataProvider. If I pass a List with data when instantiating the ListDataProvider, the CellList shows this data. The problem is that afterthat, the CellList never gets redrawn whenever I change the list of ListDataProvider. I don't know what I am doing wrong or if I missing something. I have looked into the documentation and but I can't find anything.
Here is the code: The UIBinder xml file: <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:c="urn:import:com.google.gwt.user.cellview.client" xmlns:v="urn:import:net.universia.ferias.feriavirtual.backend.client.exhibitors.view"> <ui:style> .leftPanel { padding: 15px 25px 15px 25px; } .rightPanel { padding: 15px 25px 15px 25px; } .button { margin-right: 8px; } .exhibitorList { border: 1px solid black; background-color: #EEE; width: 250px; height: 600px; } .moduleList { } </ui:style> <g:DockLayoutPanel unit="PX"> <g:west size="300"> <g:VerticalPanel styleName='{style.leftPanel}' spacing="8"> <g:Label>Expositores</g:Label> <g:ScrollPanel addStyleNames='{style.exhibitorList}' width="250px" height="600px"> <c:CellList ui:field="exhibitorList" /> </g:ScrollPanel> <g:Button ui:field="editExhibitorButton" addStyleNames='{style.button}'>Editar</g:Button> </g:VerticalPanel> </g:west> <g:center> <g:VerticalPanel styleName='{style.rightPanel}' spacing="8"> <g:Label>Expositor X</g:Label> <g:FlowPanel> <g:Button addStyleNames='{style.button}'>Nuevo módulo</g:Button> <g:Button addStyleNames='{style.button}' enabled="false">Editar módulo</g:Button> <g:Button addStyleNames='{style.button}' enabled="false">Eliminar módulo</g:Button> </g:FlowPanel> </g:VerticalPanel> </g:center> </g:DockLayoutPanel> </ui:UiBinder> The View class: public class ExhibitorsAdminView extends Composite implements ExhibitorsAdminPresenter.IExhibitorsAdminView { interface Binder extends UiBinder<Widget, ExhibitorsAdminView> {} private static final Binder binder = GWT.create( Binder.class ); private static class ExhibitorCell extends AbstractCell<Exhibitor> { @Override public void render(Cell.Context context, Exhibitor exhibitor, SafeHtmlBuilder sb) { if (exhibitor != null) { sb.appendEscaped(exhibitor.getName()); } } } private ListDataProvider<Exhibitor> exhibitorsDataProvider; private SingleSelectionModel<Exhibitor> exhibitorsSelectionModel; @UiField( provided = true ) CellList<Exhibitor> exhibitorList; @UiField Button editExhibitorButton; // @UiField(provided = true) // CellTable<Object> moduleList = new CellTable<Object>(); public ExhibitorsAdminView() { exhibitorsSelectionModel = new SingleSelectionModel<Exhibitor>(Exhibitor.KEY_PROVIDER); exhibitorList = new CellList<Exhibitor>(new ExhibitorCell(), Exhibitor.KEY_PROVIDER); exhibitorList.setSelectionModel(exhibitorsSelectionModel); exhibitorsDataProvider = new ListDataProvider<Exhibitor>(getExhibitors()); exhibitorsDataProvider.addDataDisplay(exhibitorList); exhibitorList.setPageSize(exhibitorsDataProvider.getList().size()); initWidget( binder.createAndBindUi( this ) ); } public SingleSelectionModel<Exhibitor> getExhibitorsSelectionModel() { return exhibitorsSelectionModel; } public ListDataProvider<Exhibitor> getExhibitorsDataProvider() { return exhibitorsDataProvider; } private List<Exhibitor> getExhibitors() { List<Exhibitor> exhibitors = new ArrayList<Exhibitor>(); for (int i = 0; i < 10; i++) { exhibitors.add(new Exhibitor(i, "aaaaaaaaaaaaaaa")); } return exhibitors; } public HasClickHandlers getEditExhibitorButton() { return editExhibitorButton; } } The presenter class: @Presenter(view = ExhibitorsAdminView.class) public class ExhibitorsAdminPresenter extends BasePresenter<ExhibitorsAdminPresenter.IExhibitorsAdminView, ExhibitorsEventBus> { public interface IExhibitorsAdminView { SingleSelectionModel<Exhibitor> getExhibitorsSelectionModel(); ListDataProvider<Exhibitor> getExhibitorsDataProvider(); HasClickHandlers getEditExhibitorButton(); } private DispatchAsync dispatch = null; @Inject public ExhibitorsAdminPresenter(final DispatchAsync dispatch) { this.dispatch = dispatch; } @Override public void bind() { getView().getExhibitorsSelectionModel().addSelectionChangeHandler( new SelectionChangeEvent.Handler() { public void onSelectionChange(SelectionChangeEvent event) { Exhibitor selected = getView().getExhibitorsSelectionModel().getSelectedObject(); if (selected != null) { Window.alert("You selected: " + selected.getName()); } } }); getView().getEditExhibitorButton().addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { } }); } public void onGoToExhibitorsAdmin() { } public void onLoadExhibitors() { dispatch.execute(new GetExhibitors(), new AsyncCallback<GetExhibitorsResult>() { public void onSuccess(GetExhibitorsResult result) { getView().getExhibitorsDataProvider().setList( result.getExhibitors()); getView().getExhibitorsDataProvider().refresh(); } public void onFailure(Throwable caught) { GWT.log("error executing command ", caught); } }); } } Along with this, another thing that is happening is that Window.alert("") (inside the onSelectionChange() method) is not working. Which could be the reason? Thanks. -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
