Это то, что я сейчас использую. Это работает, но я не уверен, что это правильный подход.
public class ListItem extends HTMLPanel implements HasClickHandlers {
public ListItem(String html) {
super(html);
}
@Override
protected void setElement(Element elem) {
super.setElement(DOM.createElement("li"));
}
@Override
public HandlerRegistration addClickHandler(ClickHandler handler) {
return addDomHandler(handler, ClickEvent.getType());
}
}
Это позволяет использовать UiBinder для определения ListItem, который затем может содержать произвольный HTML (и быть активным).