Referencja 3 tablic? dziwna sytuacja

0

Cześć, możliwe jest, że mając 3 tablice ImageView (android) nadpisując jedną z nich, nadpisują się 2 drugie tablice?

Mam coś takiego;
załóżmy że mamy dwie tablice punktów. np

Gracz1[0][0]=obr. drzewa; Gracz2[0][0]=obraz jajka

;

I teraz mam coś takiego, że wywołuje metodę niżej czyli updateGracz(Gracz2) z arg drugiej tablicy.. i od razu próbuje odczytać punkt [0][0] z tablicy Gracz1 to dostaje to nagle tam znajduje się jakimś cudem obr wody? mimo, że posłalem tablicę Gracz2 a nie 1? Jest to możliwe czy już mi całkowicie coś szwankuje?

     public void  updateGracz(ImageView gracz[][]) {
        for (int i = 0; i < gracz.length; i++) {
            for (int j = 0; j < gracz.length; j++) {
                gracz[i][j].setImageResource(R.drawable.blog_dp_5058985_7848593_tr_woda);
                gracz[i][j].setTag(R.drawable.blog_dp_5058985_7848593_tr_woda);
            }
        }

    }
0

Być może masz tylko jedną tablicę (jeden byt) zapisaną pod trzema nazwami (bo chciałeś skopiować, a po prostu trzy razy przypisałeś referencję do tej samej tablicy) ?

0

No właśnie zdaje mi się, że normalnie 3 obiekty mam

ImageView Gracz1[][]=new ImageView[5][5]; itd To się dzieje tylko kiedy wywołana jest ta funkcja

0

Sorry za dubla, ale zdaje się, że problem jest tutaj.. kod ma ściągnąć wszystkie przyciski do tablic. Potem tylko do jednej z nich dodaje obrazek a jakims trafem od razu kolejne tablice ten obrazek już mają..

        tl = (TableLayout) findViewById(R.id.tableLayout);
        for (int i = 0; i < tl.getChildCount(); i++) {
            View v = tl.getChildAt(i);
            if (v instanceof TableRow) {

                for (int j = 0; j < ((TableRow) v).getChildCount(); j++) {
                    View innerView = ((TableRow) v).getChildAt(j);
                    if (innerView instanceof ImageView) {
                        Gracz1[i][j] = (ImageView) innerView;
                        Gracz2[i][j] = (ImageView) innerView;
                        mapa[i][j] = (ImageView) innerView;

                    }
                }
            }
        } 
0

Nie wiem za bardzo o co chodzi, ale

                    if (innerView instanceof ImageView) {
                        Gracz1[i][j] = (ImageView) innerView;
                        Gracz2[i][j] = (ImageView) innerView;
                        mapa[i][j] = (ImageView) innerView;
                    }

sugeruje, że kopiujesz do wszystkich tablic jakiś ImageView...

Poza tym wydawało mi się, że widziałem w tym wątku post, w którym ktoś Ci napisał, że źle iterujesz po tablicy, bo powinieneś mieć for (int j = 0; j < gracz.length[0]; j++), ale jakoś go nie widzę...

0

red.png
Może trzeba być moderatorem, jak się wyloguje i jestem gościem, to też nie widzę.

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