• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zwiększanie pojemności tablicy

Object Storage Arubacloud
0 głosów
171 wizyt
pytanie zadane 29 czerwca 2019 w Android, Swift, Symbian przez matir85 Bywalec (2,410 p.)

Witam.

Posiadam pewną klasę

public class Blok  

W tej klasie mam tablice

 public static final Blok[] mieszkania = {
            new Blok("Mieszkanie 1", "25", "12", "8", "6", "5"),
            new Blok("Mieszkanie 2", "29", "19", "10", "0", "0"),
    };

Tablica powiązana jest z

ListView

w której dokonujemy wyboru pozycji aby przejść do szczegółów. Jeśli tych pozycji

new Blok

jest do 10 to wszystko jest ok. Natomiast jeśli tablica zostanie rozbudowana ponad 10 to wszystkie opcje, które mają indeks od 10 wzwyż powodują błąd: java.lang.ArrayIndexOutOfBoundsException: length=10; index=11.

Jak mogę rozbudować tą tablicę aby jak będzie posiadała np: 20 pozycji to aby nie wyrzucało mi błędu że jestem poza obszarem tablicy ???

1 odpowiedź

0 głosów
odpowiedź 29 czerwca 2019 przez Aisekai Nałogowiec (42,190 p.)

Użyj Listy, jeśli zakładasz że liczba elementów nie będzie stała: https://docs.oracle.com/javase/8/docs/api/java/util/List.html

 

komentarz 29 czerwca 2019 przez matir85 Bywalec (2,410 p.)
Będzie stała tylko docelowo ma mieć około 100 elementów
1
komentarz 29 czerwca 2019 przez Aisekai Nałogowiec (42,190 p.)
no to nie jest stała, skoro teraz ma 10, a docelowo ma mieć koło 100.

Użyj listy w tym przypadku.
komentarz 29 czerwca 2019 przez matir85 Bywalec (2,410 p.)
Dzięki za podpowiedz. Jeszcze nie wiem jak ale spróbuje pójść w tym kierunku co radzisz.
komentarz 29 czerwca 2019 przez Aisekai Nałogowiec (42,190 p.)

To: 

public static final Blok[] mieszkania = {
           new Blok("Mieszkanie 1", "25", "12", "8", "6", "5"),
           new Blok("Mieszkanie 2", "29", "19", "10", "0", "0"),
   };

zmień na:

public static final List<Blok> mieszkania = new ArrayList<Blok>(Arrays.asList(
           new Blok("Mieszkanie 1", "25", "12", "8", "6", "5"),
           new Blok("Mieszkanie 2", "29", "19", "10", "0", "0")
   ))

potem wykonujesz już operacje jak na listach (get(), add() itd.)

komentarz 29 czerwca 2019 przez matir85 Bywalec (2,410 p.)

Taką listę to najlepiej w nowej klasie ustawić ???? I czy wywołać mogę ją tak samo jak tablicę za pomocą adaptera

ArrayAdapter<Blok> listAdapter = new ArrayAdapter<>(
                    this, android.R.layout.simple_list_item_1, Blok.mieszkania);
            ListView myLista = (ListView) findViewById(R.id.my_list);
            myLista.setAdapter(listAdapter);

            // Obiekt nasłuchujący
            AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> myLista, View view, int position, long id) {
                .......

 

komentarz 29 czerwca 2019 przez Aisekai Nałogowiec (42,190 p.)

Czy w nowej klasie ustawić? Zależy - chociaż w tym przypadku, może zostać tak jak jest. Na pewno bym taki zabieg zrobił, gdyby dany obiekt nie mógł istnieć bez innego obiektu (np. Mieszkania w Bloku, tutaj mogłaby być Lista mieszkań należąca do obiektu klasy Blok). 

Nie jestem pewien, w androidzie nie piszę ale w dokumentacji androida: 

https://developer.android.com/reference/android/widget/ArrayAdapter

jest podany konstruktor z parametrem typu List, więc pewnie możesz. 

Podobne pytania

0 głosów
1 odpowiedź 252 wizyt
pytanie zadane 25 października 2017 w Android, Swift, Symbian przez Howdy Początkujący (360 p.)
0 głosów
1 odpowiedź 219 wizyt
0 głosów
0 odpowiedzi 134 wizyt

92,567 zapytań

141,420 odpowiedzi

319,616 komentarzy

61,953 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...