Szukałem ListPreference, w którym użytkownik może zmienić kolejność pozycji z listy. Elementy mogą być przeciągane i mogą być ponownie zamawiane przez użytkownika.Jak utworzyć listę z przeciągalnymi elementami?
Widziałem to w moim niestandardowym ROM (i jestem prawie pewien, że widziałem to w Cyanogenmod) dla QuickPanel. Oto zrzut ekranu, aby uzyskać ten pomysł przez:
wiem, jak mogę uczynić przedmiotów niestandardowych ListView i ustawić ikonę, aby wskazać, że rzeczy są przeciągane, ale nie wiem jak je przeciągać i odpowiednio zmienić kolejność. Jeśli chodzi o zapisywanie ich w preferencjach, znalazłem this, które można łatwo wdrożyć.
PS: Wiem CyanogenMod jest open-source, ale nie mogłem znaleźć źródła dla tej konkretnej rzeczy :(Najbliżej mogę dostać było this, która powinna być gdzieś w pobliżu innego ekranu ...
Dzięki z góry za wszelkie wskazówka o tym
UPDATE. Skończyło się przy użyciu plików z przyjętym odpowiedź, z dodatkami i modyfikacjami jestem wymieniając je tutaj dla dalszego odniesienia
-
..
Użyj niestandardowego adaptera (ArrayAdapter w moim przypadku), aby zaimplementować wizualną informację zwrotną, że ten element jest przeciągalny, co jest obrazem w pobliżu widoku TextView. Jest to opcjonalne.
Ustaw DragListener i RemoveListener, aby odpowiednio zaktualizować listę. ListView nie robi tego automatycznie. Zależy to od używanego adaptera.
Była linia, która rzuciła widok na grupę ViewGroup, popełniła kilka błędów, więc usunąłem obsadę bez żadnego problemu, nie było potrzebne. (w metodzie onInterceptTouchEvent).
Zmiana
mRemoveMode = 1;
w konstruktorze TouchInterceptor lub jednym z:FLING = 0; SLIDE = 1; TRASH = 2;
. Myślę, że dlaTRASH
, zasób powinien być również dostępny.
Tak naprawdę wziąłem plik nie z linku odpowiedzi, ale z pliku Cyanogenmod, który już miałem, ale domyślam się, że te pliki były takie same.
Są to rzeczywiste pliki w projekcie (w R12, w momencie pisania tego tekstu):
- The Preference using this ListView
- The ListActivity with the listeners and the Adapter
- The actual ListView
Mam nadzieję, że pomaga kogoś innego :)
Nie ma w tym żadnej standardowej funkcji, więc konieczne jest obejście funkcji Touch i wykrycie zdarzenia dotykowego. Twoje przesłonięcie prawdopodobnie zostanie aktywowane przez zdarzenie longClick, w przeciwnym razie nie będziesz wiedział, czy użytkownik chce przeciągnąć element, czy przewinąć listę. – Christine
@Christine Nie mogę użyć [OnDragListener] (http://developer.android.com/reference/android/view/View.OnDragListener.html)? – jadkik94
@ jadkik94 Hi. Próbuję zaimplementować to samo przy użyciu tych plików. Ale ponieważ jest to dość stare pytanie, zastanawiałem się, czy jest coś lepszego, czy raczej powiedziałbym, że wygodniejsza metoda implementacji listy, którą można przeciągnąć pojawiła się czy nie? Nie mogłem jednak znaleźć. Doceniam wszelkie wskazówki, które możesz dać .. Dzięki. – Anjani