2016-05-21 3 views
1

Ich habe eine InfiniteContainer-Liste, in der jedes Element ein relativ komplexer Container mit mehreren verschiedenen Schaltflächen mit jeweils ihrer Aktion ist. Da es sich um eine scrollbare Liste handelt, verwende ich LongPointerPress, um Drag & Drop zu aktivieren, wie es Shai in einem anderen Beitrag empfohlen hat. Um dies zu tun, muss ich eine führende Komponente einstellen. Wenn ich es jedoch einstelle, erhält keiner der anderen Knöpfe ihre individuellen Ereignisse. Ich dachte, ich könnte die getLeadComponent() der Tasten überschreiben, um es null zurückgeben, um sicherzustellen, dass diese Tasten ihre eigenen Ereignisse behandeln, aber es ist privat und konnte nicht an andere Lösung für jetzt denken.Wie können Sie mit einer Lead-Komponente sicherstellen, dass einige Komponenten ihre eigenen Ereignisse verarbeiten?

Gibt es einen empfohlenen Ansatz für die Handhabung?

NB. Ich habe viel Zeit damit verbracht, Teiltipps aus verschiedenen Beiträgen zusammenzustellen und Trial and Error zu verwenden, damit diese Benutzeroberfläche funktioniert. Es wäre nützlich, wenn die CN1-Dokumentation mehr explizite Ratschläge zu den Ansätzen enthalten könnte, die für solch eine "echte" komplexe UI funktionieren, die zB Listen zusammenfassen, & fallen lassen, mehrere Tasten drücken, lange drücken für zusätzliche Aktionen, Swipable containers, ... Es sollte sich nicht wie ständiges Hacken anfühlen ;-)

+0

Haben Sie durch das Entwicklerhandbuch geschaut? http://codenameone.com/manual/ Es ist das PDF über 770 Seiten expliziter Beispiele. –

+0

Danke, ja ich tat es. Mein Punkt ist, dass das Handbuch (plus Ihre vielen hilfreichen Antworten in den Foren) alle spezifischen Situationen einzeln beschreiben, aber wenn Sie versuchen, alles in einer komplexen Benutzeroberfläche zusammenzusetzen, wird es wirklich schwierig, die Interaktionen zu verstehen und das Ganze richtig zu machen . Vielleicht könnte eine Möglichkeit, dies zu beheben, darin bestehen, einen Abschnitt im Handbuch hinzuzufügen, in dem Sie zeigen, wie Sie einige echte komplexe UIs, z. aus bekannten iOS/Android-Apps? – user1246562

+0

Ich denke, die Lösung dafür ist die Verwendung der Demos als Referenz. Die Probleme mit "alles zusammenfügen" sind immer schwierig und oft schwer zu dokumentieren. Wir arbeiten an den Demos, um mehr separate Teile zusammenzufügen, aber aufgrund der Natur der sich entwickelnden Komplexität wird dies nur einige Probleme der Leute lösen. –

Antwort

0

Sie können setLeadComponent(null), wenn Sie mit der Hauptkomponentenfunktionalität fertig sind, um den Hauptkomponenteneffekt "rückgängig zu machen". Das Hauptkomponentenverhalten ist ein "Alles oder Nichts" -Ansatz.

Wenn dies für Sie nicht funktioniert, können Sie die Low-Level-Ereignisse im Form überschreiben und die Funktionalität dort implementieren. Sie können Komponenten daran hindern, Ereignisse zu erhalten, indem Sie super.pointer* Methoden in Form nicht aufrufen und somit jede Art von Effekt zulassen.