getChildAt() dla TableLayout / Android

0

Witam, mam problem z TableLayout(layout). Chce zrobić coś takiego Po kliknięciu w jeden przycisk dodaje mi nowy wiersz(row) do TableLayout-u(to działa)

Po kliknięciu w drugi przycisk docelowo, chce wyciągać dane z wszystkich dodanych wierszy i wrzucić je do bazy.
Struktura wygląda tak: Tablelayout: layout, TableRow row. W row mam na razie 2 pola edittext. Na razie testowo po kliknięciu w przycisk chce wyciągnąć dane z np 2 wiersza i 2 pola edittext.

Próbuję wykorzystać poniższą konstrukcję(Akcja dla kliknięcia w przycisk) lecz zwraca mi błąd Null point exception. Wywołanie metody getChildCount() działa, problem jest tylko z getChildAt();

public void onClick(View v) {
                
                 TableRow row = (TableRow) layout.getChildAt(1);                         
                 TextView tmp = (TextView) row.getChildAt(1);
                 String txt=tmp.getText().toString();
                        
                 Toast.makeText(NowePomieszczenie.this, "Wyciagnięte dane"+txt, Toast.LENGTH_SHORT).show();   
                     
                 }           
        });                
    }

Nie wrzucałem całęgo kodu żeby nie robić śmietnika, chyba że jest to konieczne to wrzucę. Dzięki za sugestie

0

getChildAt działa tylko jak dziecko jest widoczne. Tak poza tym sprawdzałeś czy dany index istnieje?
Btw. nie lepiej używać jakiegoś adaptera i ListView czy coś?

Ja robiłem coś podobnego i używałem ListView.
Tworzyłem w adapterze widok reprezentujący wiersz i dodawałem do dzieci tego widoku słuchaczy modyfikujących mój model danego wiersza. Później to już kwestia zapisania tego w bazie danych czy cokolwiek.

0

TableLayout jest przyjaźniejszy :). Dzieci są widoczne cały czas. No można powiedzieć, że sprawdzałem bo gdy wywołam getchildcount() to zlicza, więc je widzi, problemem jest odwołanie się do poszczególnego dziecka.

Tak to wygląda
https://www.dropbox.com/s/okki1f6ayr41m36/Zrzut%20ekranu%202013-11-21%2017.47.50.png

0

TableLayout jest przyjaźniejszy

nie, nie jest. Od tego co jest na screenie masz listview i expandablelistview.

0

Zdecydowanie użyłbym ListView. Wtedy nie musisz bawić się w z tym getChildAt tylko pobierasz dane z adaptera i tyle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1