Eine gute Lösung für dieses Problem ist, wenn Sie ActionCell verwenden, das mit Klicks umgehen kann. Die Verwendung ist ein bisschen kompliziert, aber für mich hat es ziemlich gut funktioniert.
Zuerst müssen Sie ActionCell mit einem Delegaten initialisieren, schreiben Sie in den Konstruktor new ActionCell.Delegate<your class>
. In dieser Überschreibung wird die Methode execute
und schreiben Sie darin Ihren Code, der das Klickereignis behandelt.
Die andere Sache, die Sie tun müssen, ist eine html aus dem Bild aufzubauen. Die SafeHtmlUtils
Klasse gibt Ihnen eine sehr einfache Möglichkeit, dies zu tun. Ihre fromTrustedString-Methode hilft Ihnen beim Aufbau der HTML-Datei:
SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create ("Your image from a resource class").getHTML());
Auf diese Weise kann das SafeHtml-Feld initialisiert werden, und wenn Sie dem ActionCell-Konstruktor das SafeHtml und den Delegaten übergeben, wird er die Arbeit für Sie erledigen.
In diesem Beispiel wird eine Schaltfläche mit dem Bild aus der Bundle-Datei initialisiert. Sie können es ohne die Schaltfläche machen, wenn Sie die Render-Methode der ActionCell überschreiben und den SafeHtmlBuilder in der Methode mit der gleichen SafeHtml-Variable wie oben anhängen.
Mein Code sieht wie folgt aus:
IdentityColumn<Type> imageCell = new IdentityColumn<Type>(new ActionCell<Type>("AnyString",
new ActionCell.Delegate<Type>() {
@Override
public void execute(final Type item) {
"your code"
}
}) {
@Override
public void render(Context context, Type value, SafeHtmlBuilder sb) {
if (value != null) {
SafeHtml html = SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(resource.image).getHTML());
sb.append(html);
}
}
});
Sie würden eher die Methode in einer anderen Klasse überschreiben, aber ich wollte sie für diesen Beitrag nicht aufteilen. Es hat bei mir sehr gut funktioniert, ich hoffe, es hilft auch anderen.
0 Stimmen
Ich habe Arbeit um ist ButtonCell anstelle von Bild Zelle dann änderte ich den Stil der Schaltfläche und aber Hintergrundbild zu ihm. es funktioniert gut sagen jetzt.