2017-09-19 7 views
0

J'ai un problème avec mon application. Ce que j'essaie de faire est de trouver des rimes à un mot entré de l'utilisateur dans un champ de texte. J'ai un dictionnaire dans le dossier des assets appelé "words.txt". Mon application fonctionne presque correctement, mais elle ne trouve qu'un seul mot dans mon fichier texte. Comment trouver tous les mots qui riment avec le mot du champ de texte? Des idées? Voici mon code:Trouver des mots dans un fichier texte à partir du dossier des ressources ANDROID STUDIO

@Override 
protected void onCreate(Bundle saveInstanceState){ 
    super.onCreate(saveInstanceState); 
    setContentView(R.layout.activity_main); 

    editTextWord = (EditText)findViewById(R.id.editTextWord); 
    b_read = (Button)findViewById(R.id.buttonSearch); 
    tv_text = (TextView)findViewById(R.id.nameTxt); 
    b_clear = (Button)findViewById(R.id.buttonClear); 



    b_clear.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(MainActivity.this, MainActivity.class); 
      startActivity(i); 
     } 
    }); 

    b_read.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      try { 
       InputStream is = getAssets().open("words.txt"); 
       int size = is.available(); 
       BufferedReader rd = new BufferedReader(new InputStreamReader(is,"UTF-8")); 
       String line; 
       String word = editTextWord.getText().toString(); 
       if (word.isEmpty()){ 
        Toast.makeText(getApplicationContext(), "Wpisz słowo", Toast.LENGTH_SHORT).show(); 
        return; 
       } 

       while ((line = rd.readLine()) !=null){ 
        if (line.substring(line.length()-2).equals(word.substring(word.length()-2))){ 
         tv_text.setText(line); 

        } 
       } 
       rd.close(); 

      }catch (IOException ex){ 
       ex.printStackTrace(); 
      } 


     } 
    }); 
} 

Répondre

0

tv_text.setText écraser ce qui se déjà dans le TextView. Vous devez utiliser quelque chose comme TextView.append(CharSequence)

Essayez:

tv_text.append(line + "\n"); 
+0

grand, il fonctionne, mais maintenant comment je peux l'afficher un sous-vous? maintenant il semble plutôt mauvais – MichalG

+0

Vous devez ajouter de nouvelles lignes. Peut-être essayer: tv_text.append (ligne + "\ n"); – amacf

+0

Merci beaucoup :) maintenant cela fonctionne très bien. – MichalG