Wie erstelle ich eine ListView mit ziehbaren Elementen?

Ich habe nach einer ListPreference gesucht, in der der Benutzer die Reihenfolge der Elemente aus einer Liste ändern kann. Die Gegenstände wären ziehbar und können vom Benutzer nachbestellt werden.

Ich habe dies in meinem benutzerdefinierten ROM (und ich bin mir fast sicher, dass ich es in Cyanogenmod gesehen habe) für das QuickPanel gesehen. Hier ist ein Screenshot, um die Idee zu vermitteln:

Ich weiß, wie ich benutzerdefinierte ListView-Elemente erstellen und das Symbol festlegen kann, um anzuzeigen, dass die Elemente ziehbar sind, aber ich weiß nicht, wie ich sie ziehbar machen kann, und ändere die Reihenfolge entsprechend. Was das Speichern in den Einstellungen angeht, habe ich gefundendiese das könnte leicht implementiert werden.

PS: Ich weiß, dass Cyanogenmod Open Source ist, aber ich konnte die Quelle für diese bestimmte Sache nicht finden :( Die nächste, die ich bekommen konnte, wardiese, die irgendwo in der Nähe des anderen Bildschirms sein sollte ...

Vielen Dank im Voraus für jeden Tipp dazu.

AKTUALISIEREN: Ich habe die Dateien aus der akzeptierten Antwort mit Ergänzungen und Änderungen verwendet. Ich liste sie hier als weitere Referenz auf.

Verwenden Sie einen benutzerdefinierten Adapter (in meinem Fall ArrayAdapter), um das visuelle Feedback zu implementieren, dass dieses Element ziehbar ist. Hierbei handelt es sich um eine ImageView in der Nähe der TextView. Dies ist optional.

Legen Sie einen DragListener und einen RemoveListener fest, um die Liste entsprechend zu aktualisieren. Die ListView macht das nicht automatisch. Und das hängt vom verwendeten Adapter ab.

Es gab eine Zeile, in der eine View in eine ViewGroup umgewandelt wurde. Es sind einige Fehler aufgetreten. Daher habe ich die Umwandlung ohne Probleme entfernt. Sie wurde nicht benötigt. (In der onInterceptTouchEvent-Methode).

VeränderungmRemoveMode = 1; im Konstruktor von TouchInterceptor oder einem von:FLING = 0; SLIDE = 1; TRASH = 2;. Ich denke fürTRASHsollte auch eine Ressource verfügbar sein.

Ich habe die Datei tatsächlich nicht aus dem Link der Antwort genommen, sondern aus dem Cyanogenmod, den ich bereits hatte, aber ich denke, diese Dateien waren die gleichen.

Dies sind die tatsächlichen Dateien im Projekt (bei r12 zum Zeitpunkt des Schreibens):

Die Voreinstellung mit dieser ListViewDie ListActivity mit den Listenern und dem AdapterDie eigentliche ListView

Ich hoffe es hilft jemand anderem :)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage