XTemplates are for building raw html, and are good at doing it a lot - each time you call it, it quickly will build a new string that can be injected into the dom. No widgets can be declared within the template.
But if you pass that SafeHtml instance to a GWT HTMLPanel or a GXT HtmlLayoutContainer, you can then add widgets inside of some of those elements rendered.
In a Grid/ListView/etc, you don't have this option, because you are not supposed to draw widgets (large expensive things) over and over again - thats why all GXT 3 fields are usable as Cells in those places.
JS can't be used in 3.x xtemplates, and while it *can* be used in 2.x dynamic xtemplates, it is very very ugly.
If you are using a ListView, you are (or could be) using a Cell to draw each item. You are probably using the render method to trigger your template to draw. In the same way, you should override onBrowserEvent, and see where the event came from.
Cells are as powerful as widgets, but faster to draw, and harder to make. If you are drawing many rows, or need the selection features of the ListView, I'd definitly go with a Cell to fix this. Otherwise, if you really just want a stack of widgets, I'd make N StarRatingWidgets and stack them in a container like FlowLayoutContainer.