Zastanowiłem się również nad wdrożeniem takiej funkcji, ale jeszcze jej nie zrobiłem. Jedyne, co mogę dostarczyć, to kilka pomysłów na rozwiązanie tego problemu. Jeśli w końcu napisałem jakiś kod, opublikuję go tutaj.
- Główna wymagana klasa to niestandardowy adapter rozszerzający
ListAdapter
(ArrayAdapter, SimpleCursorAdapter itd.).
- Adapter stosuje View.OnTouchListener do wszystkich swoich widoków.
- Za każdym razem, gdy słuchacz wykrywa poziomy zwój
dx
, wywołuje concernedView.offsetLeftAndRight(dx)
(co spowoduje, że widok będzie można przeciągnąć). Oczywiście adapter musi zapisać bieżące przesunięcie w poziomie dla widoku. Jeśli użytkownik przeciągał widok i usuwał swój palec z ekranu, touchListener również to wykryje i uruchomi animację zsuwania. Korzystając z bieżącego offsetu możemy również obliczyć wartość alfa, więc widok zniknie, gdy zbliży się do granic ekranu.
- Jeśli jeden wpis listy zostanie w końcu usunięty przez użytkownika, staje się on nieco trudny i nadal nie jestem pewien, jak zaimplementować następującą akcję: Zawartość listy musi zostać zaktualizowana (lub adapter musi zignorować odwołane zgłoszenia), a opinie poniżej tego, które zostały odrzucone, muszą zawisnąć w górę, aby wypełnić lukę. Myślę, że może to sprawić, że ListView załaduje nową zawartość, ale natychmiast wypełniłoby to lukę. Aby tego uniknąć, chciałbym rozpocząć animację, która pozwala wszystkim zainteresowanym obserwacjom zawisnąć z ich dotychczasowej pozycji (gdzie wciąż mieliśmy lukę) z powrotem do ich aktualnej pozycji (gdzie luka jest wypełniona).
To tylko niektóre z moich przemyśleń na ten temat, które mogą pomóc niektórym osobom w rozpoczęciu pracy nad problemem. Tak jak powiedziałem, prawdopodobnie zamierzam to zaimplementować kiedyś w przyszłości i oczywiście opublikuję tutaj kod.
Będę wdzięczny za wszelkie opinie w komentarzach, ale nie chcę, aby thorougly wyjaśnić każdy aspekt mojego pomysłu, że zajęłoby mi zbyt wiele czasu;)
Cóż, to jest początek. Spróbuję stworzyć coś na podstawie tego i zaktualizuję tutaj, jeśli się uda. – iamronak
Zanim usuniesz widok, animuj jego wysokość do 0. To sprawi, że lista ładnie się zapadnie. Wtedy powiadomienie nie będzie drażniącym krokiem. – Hounshell