/ / Jak zrobić dwukierunkowy przewijany widok w systemie Android? - Android, Excel

Jak zrobić dwukierunkowy przewijany widok w systemie Android? - Android, Excel

Muszę pokazać dużą tabelę z przewijaniem dwuwymiarowym, np. Arkusz Excela. Może być bardzo duży, do 1000 wierszy (i ~ 10 kolumn).

Tak więc wszystkie rozwiązania, które znalazłem w oparciu o pomysł ListView-into-HorizontalScrollView. Jest zbyt wolny, aby można go było użyć.

Próbowałem użyć WebView, ale przewijanie do przewijania jest jeszcze wolniejsze.

Może mogę uzyskać mapę bitową mojego listLayout i umieścić go w HorizontalScrollable przy każdej aktualizacji? Lub użyć innej magicznej magii? A może mogę użyć lib?

Odpowiedzi:

0 dla odpowiedzi № 1

Oto pomysł:

  • ListView dla wierszy
  • Każdy wiersz jest oddzielnym poziomym LinearLayout, każdy widok podrzędny jest komórką
  • LinearLayout jest zawijany w HorizontalScrollView, więc każdy element w ListView jest HorizontalScrollView.
  • Podczas przewijania w poziomie przewijaj jednocześnie wszystkie widoki HorizontalScrollViews, aby wszystkie pozostały wyrównane w pionie względem siebie.

Nie wydaje się, aby wszystkie te widoki HorizontalScrollView były wydajne, ale mogą renderować pojedynczy wiersz znacznie szybciej niż jeden HorizontalScrollView może renderować osadzony ListView.

Teraz, jak zrobić poziome przewijanie? Masz dwie możliwości:

  1. Propaguj zdarzenia przesuwania w jednym widoku HorizontalScrollView na wszystkie inne. Pro: łatwiej kodować. Con: Ze względu na opóźnienia wątku, przeciągnięty HSV może nie być dokładnie zsynchronizowany z innymi HSV.

  2. Chwyć zdarzenia z centralnego miejsca, npzastąpić ListView i propagować je do HSV. Pro: czystszy wyświetlacz. Con: trudniejsze do zakodowania ze wszystkimi narzędziami onInterceptTouchEvent i onTouchEvent voodoo niezbędnymi do przechwytywania przeciągnięć.

Inną wadą tego podejścia jest to, że widoki komórek w linii poziomej LinearLayout muszą mieć ustawione wyraźne szerokości, w przeciwnym razie kolumny nie będą wygięte.

Nie mogłem tego z czystym sumieniem polecić, chyba że spróbowałem, więc zhakowałem razem jakiś kod. android-table-testowy projekt na Githubie

Mam źródło danych z 18 kolumnami i 36-tysięcznymi wierszami i wydaje się przewijać ładnie (w obie strony) na wszystkich moich urządzeniach.