Pęta i update TextView

Odpowiedz Nowy wątek
2018-11-23 14:34
0

Mam problem z wyświetleniem wszystkich tekstów z pętli tak żeby pojawiły się w textview jeden pod drugim, a nie tylko ostatni. Trzeba użyć do tego recyclerwiev czy inaczej to można rozwiązać? Jeśli recyclerwiev to też prosilbym o nakierowanie

Pozostało 580 znaków

2018-11-23 14:54
Wesoły Ogórek
0

jak chcesz w 1 textView to rob konkatencaje stringow i dodawaj symbol nowej linii '\n'

czyli string1.plus("\n").plus(string2).plus("\n")... itd
jak bedzie duzy takich stringow to uzyj StringBuilderia

recyvlerview rozwiazuje troche inne problemy i nie ma sensu go implementowac jak bedziesz mial 10 stringow.

pokaz co masz do zrobienia lepiej

Pozostało 580 znaków

2018-11-23 14:57
0

Możesz zbudować jednego Stringa z pętli i przekazać go do TextView. Nie wiem na ile ma to sens, bo nic nie napisałeś o swoim przypadku. Dodatkowo jeśli linii tekstu będzie za dużo, to nie zmieszczą się na ekranie i żeby móc przesunąć ekran, musiałbym widoki opakować na przykład w ScrollView. Wtedy RecyclerView byłby lepszym rozwiązaniem. Temat był już kilka razy wałkowany na forum, więc możesz użyć wyszukiwarki. Poza tym biblioteka jest tak popularna, że w Internecie jest pełno materiałów o niej. Chociażby bezpośrednio na stronie Google - https://developer.android.com[...]topics/ui/layout/recyclerview.

edytowany 2x, ostatnio: Michał Sikora, 2018-11-23 14:58

Pozostało 580 znaków

2018-11-23 15:01
0

Tak ogólnie się uczę, robię taką pseudo grę rpg i w pętli ma się toczyć walka z przeciwnikiem i później ma być wypisane w textview to co się działo np "zadałeś 6 obrażeń", "przeciwnik zadał Ci 11 obrażeń" na taki problem trafiłem, że nie potrafię updatować textview tak żeby stringi się w nim dodawały i powstał długi napis. Póki co chciałbym żeby w tej pętli wyświetliło mi: cos10987654321 a póki co wyświetla tylko ostatnią cyfrę czyli "cos1"



```        val jeden = 1

        var dziesiec = 10

        var napis = "cos"

        while(jeden < dziesiec){

            dziesiec =- 1

            napis += dziesiec.toString()

            textView.text=napis

        }

Pozostało 580 znaków

2018-11-23 15:08
1

Możesz na przykład tak.

val jeden = 1
var dziesiec = 10
var napis = ""
while(jeden <= dziesiec) {
  napis += "\n$dziesiec"
  dziesiec--;
}
textView.text = "cos $napis"

Takie sobie to. Jak się uczysz radziłbym napisać grę konsolową zamiast rzucać się na Androida, bo musisz najpierw załapać podstawy i schematy programowania, których Ci brakuje.

Pozostało 580 znaków

2018-11-23 15:12
0

dzieki ;)

Pozostało 580 znaków

2018-11-23 15:31
0

To jeszcze pytanie dotyczące głównego problemu. Jak te komunikaty z Log.d najlepiej wypisać w textwiev, bo brak pomysłów ```


              if(Bohater.HP > 0){

                  Log.d("walka", "Uderzyles ${Przeciwnik.nazwa} zadajac mu ${Bohater.sword_fighting} obrazen")
                  if (Przeciwnik.hp > 0){
                      Log.d("walka", "${Przeciwnik.nazwa} zostalo ${Przeciwnik.hp} HP")
                  }
              }

             if(Przeciwnik.hp < 0) {

                  Log.d("walka", "${Przeciwnik.nazwa.toUpperCase()} NIE ZYJE")

              }

              if ( Bohater.HP > 0 && Przeciwnik.hp <= 0) {

                  Log.d("walka", "Wygrales walke zdobywasz ${Przeciwnik.exp} expa")
                  Bohater.exp += Przeciwnik.exp
                  textView_Exp.text=Bohater.exp.toString()
                  Przeciwnik.hp = HPprzeciwnika
                  break

               //   break

              }
              if (Bohater.HP <= 0 && Przeciwnik.hp > 0){

                  Log.d("walka", "NIE ŻYJESZ!")
              }
edytowany 2x, ostatnio: nexxx, 2018-11-23 15:32

Pozostało 580 znaków

2018-11-23 15:34

textView.text = "${textView.text}\n$komunikat"

Pozostało 580 znaków

2018-11-23 15:49
0

dzieki dzieki

Pozostało 580 znaków

2018-11-23 21:52
Wesoły Ogórek
0

jeszcze jedna uwaga. nie wiem jak u Ciebie z angielskim ale programuj w j.angielskim. im wczesniej zaczniesz tym lepiej dla Ciebie :)

Pozostało 580 znaków

2018-11-23 21:54
Wesoły Ogórek
0
Przeciwnik.nazwa.toUpperCase()
Opponent.name.toUpperCase()

tak troche lepiej ;)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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