2017-10-15 10 views
0

Alors, disons que j'ai un tableau:Comment vérifier si un TextView contient des chaînes d'un tableau?

String Array[] = {"Dog goes woof", "Cat goes meow", "Cow goes moo", "Etc..."}; 

Et j'ai un bouton et un TextView connecté de sorte que lorsque le bouton est pressé, je peux dire par exemple:

public void onClick(View v) { 
    TextView.setText(Array[1]); 
} 

qui sera ensuite remplissez le TextView avec "Cat goes meow". Mais je veux maintenant que le bouton décide de ce qui devrait remplir TextView en fonction de ce qui est déjà là. Alors disons que j'ai un tableau [0] affiché dans le TextView, de sorte qu'il est écrit "Chien va wouah". Je veux alors un if-test qui reconnaît que Array [0] est affiché, puis le modifie, par exemple, Array [2]. Et si Array [2] est affiché, il le changera en Array [1], et ainsi de suite. J'ai un peu de problèmes sur la façon dont je devrais configurer ce test d'if, et comment je devrais le formuler pour qu'il reconnaisse ce que je recherche dans le TextView. Et je veux rechercher Array [X] ou Array [Y] et pas les chaînes elles-mêmes comme "Dog goes woof". Fondamentalement, quelque chose qui dit (avertissement: mauvais seudo code avant):

if TextView contains Array[X] 
then TextView.setText(Array[Y]) 
else if TextView contains Array[Y] 
then TextView.setText(Array[Z]) 
else TextView.setText(Array[X]) 

Répondre

0

Je facilement compris vos besoins et voici ce que vous avez besoin:

final Button yourButton= findViewById(R.id.yourButtonID); 
    final String Array[] = {"Dog goes woof", "Cat goes meow", "Cow goes moo", "Etc..."}; 
    final TextView yourTextView = findViewById(R.id.yourTextViewID); 
    yourButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      int position = 0; 
      if(textView.getText() == null) 
      { 
       textView.setText(Array[1]); // initial value 
      } 
      else{ 
       for(int i=0;i<Array.length;i++){ 
        if(Objects.equals(textView.getText(),Array[i])){ 
        position=i; //got the selected position 
        break; 
        } 
       } 
       if(position<Array.length-1){ 
        textView.setText(Array[position+1]); 

       } 
       else{ 
        textView.setText(Array[position-1]); 
       } 
      } 
     } 
    }); 

Ceci va vérifier s'il y a une valeur initiale et Dans le cas d'un cas, il vérifiera la position sélectionnée et si la position est inférieure au dernier élément, il en incrémentera un et si le dernier élément est sélectionné, il décrémentera un. Je l'ai testé et cela fonctionne, encore quelque chose ne hésitez pas à demander.

+0

Vous pouvez également ne pas vouloir utiliser autant de code dans un onClickListener, alors vous pouvez mettre ce code dans une méthode et appeler cette méthode dans le 'onClick'. –

+0

Merci beaucoup pour votre réponse. Même si je ne voulais pas d'un système croissant comme celui que vous avez soumis, vous m'avez donné la réponse dont j'avais besoin pour répondre aux questions afin de trouver ce que contenait TextView. La partie Objects.equals(). J'ai besoin d'un système plus manuel, mais votre réponse m'a donné la solution dont j'avais besoin. Merci beaucoup :) – PQuix

+0

@PQuix Heureux, ça m'a aidé, même si je ne recommande pas d'utiliser autant de code dans un OnClick, c'est pourquoi j'ai commenté d'utiliser une méthode à la place. –