poniedziałek, 17 lutego 2014

Sprawdzanie zawartości katalogu i własności plików


Kod źródłowy do tej lekcji znajduje się tutaj. Rozpakuj go i zaimportuj. W katalogu z kodem źródłowym znajdą się podkatalogi oznaczone numerami. Są to po prostu kolejne wersje kodu, tworzonego w ramach przykładów. Możesz analizować kolejne kroki tworzenia aplikacji, lub od razu zabrać się za kod z katalogu o najwyższym numerku.



Rozpoczniemy od sprawdzania zawartości katalogu. Wyniki wyświetlę na komponencie ListView.
W pierwszej kolejności dodaję więc taki komponent do mojej aktywności:


Do tego komponentu trzeba będzie dodać layout dla pojedynczych elementów listy (jest to niezbędne na późniejszych etapach), na razie tworzę pusty plik XML w katalogu layout.


Jego zawartość przedstawia się następująco:



Nic specjalnego. Plik opisuje po prostu w jaki sposób ma wyglądać pojedynczy element listy. Tutaj będzie to po prostu napis, ale równie dobrze możemy tutaj zastosować choćby TableLayout i ułożyć sobie bardziej skomplikowane struktury (np. obrazek i obok tekst).
Przyszła pora na kod:


Najważniejsze elementy znajdują się w liniach 23-28. W linii 23 do listy elementów typu String przypisuję listę plików z wskazanego katalogu. Klasa File to zwykła javowa File, nie żadna Androidowa interpretacja. W Javie każdy katalog też jest plikiem, stąd taki może nieco dziwny zapis. Katalog którego zawartość pobieram to „.” , czyli katalog root systemu. Równie dobrze może to być dowolny inny katalog, podajemy go jako parametr konstruktora klasy File. W liniii 24 tworzę obiekt klasy ArrayList. Będę musiał do adaptera (czyli elementu dzięki któremu uzupełniam zawartość komponentu klasy ListView) podać listę właśnie takiego typu. W linii 26 robię „konwersję” z dotychczas używanej listy stringów na obiekt klasy ArrayList. Linia 27 to inicjalizacja wcześniej wspomnianego adaptera. Mamy trzy parametry, pierwszy to kontekst, drugi do wskaźnik do zawartości pliku XML charakteryzującego wygląd pojedynczego elementu listy, trzeci to lista typu ArrayList zawierająca dane do wyświetlenia.


Efekt:




Zmieniłem katalog którego zawartość wyświetlam na „/sdcard” , czyli zawartość karty SD. Wynik wygląda tak:


Dodajemy teraz wyświetlanie własności plików i katalogów.


Wprowadziłem kilka zmian w kodzie. W linii 27 zmieniłem troszkę wywołanie konstruktora klasy File, tak by korzystał ze zmiennej typu String o nazwie katalog, a nie podanej bezpośrednio ścieżki. Zrobiłem tak, ponieważ nieco dalej znowu korzystam ze ścieżki do pliku i nie chcę powielać tego samego kodu. Od linii 29 do 37 iteruję po elementach listy stringów zawierających nazwy plików i katalogów. W zależności od własności pliku/katalogu do jego nazwy doklejam różne informacje. Dalsza część kodu pozostaje bez zmian. Linia 31 to doklejenie do nazwy litery R, jeśli plik/katalog możemy odczytywać. Linia 32 to dodanie do nazwy litery W jeśli mamy możliwość pisania do pliku. Linie 33-35 służą dodaniu daty do nazwy pliku/katalogu. Korzystam tutaj z obiektu klasy java.util.Date, ponieważ wartość zwracana przez metodę lastModified() wyrażona jest jako int. W linii 36 powiększam wartość iteratora którego używam do poruszania się po liście.
W pliku XML elementy_listy_glownej.xml opisującym wygląd pojedynczego elementu listy również dokonałem małej zmiany (czysta kosmetyka). Zmniejszyłem wielkość czcionki z 15 na 11, ponieważ większa ilość informacji powodowałaby zawijanie linii, a tak mamy wszystkie informacje dotyczące pliku/katalogu w jednej linijcie :)


Efekt:





2 komentarze:

  1. Brak drugiego programu w .zip

    OdpowiedzUsuń
  2. Ten komentarz został usunięty przez autora.

    OdpowiedzUsuń