2017-03-17 12 views
0

私は英語をブタのラテン語に翻訳するためのアプリケーションを構築しようとしています。しかし、条件付きコーディングを行う前に、画面に表示されているものを印刷します。それは画面上の最後の単語だけを表示します。たとえば、もし私がタイプすれば、これはそれが単語をタイプする単語です。私はそれがインデックスを使用していないので私は推測しているが、私はヒントを持っていません。私は初心者プログラマーであり、私は助けが必要です。これは私のJavaコードです。AndroidのArrayListに関する問題

package com.example.morna.piglatin; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TextView; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

public class MainActivity extends AppCompatActivity 
{ 

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

    public void onClickTranslate(View v) 
    { 
     final String vowels = "aeiouAEIOU"; 
     EditText inputTranslateText =  (EditText)findViewById(R.id.edEnglishText); 
     String t = inputTranslateText.getText().toString(); 
     List <String> objects = Arrays.asList(t.split("\\s+")); 



     for(String object: objects) 
     { 
      TextView outputPigLatin = (TextView)findViewById(R.id.txtPigLatin); 
      outputPigLatin.setText(String.valueOf(object)); 

     } 
+0

試してみてください:千)、より最適なアプローチは、StringBuilderクラスの使用となりますoutputPigLatin.setText(outputPigLatin.getText()+」 "+ String.valueOf(object)); –

+0

同じTextViewに対して複数回setTextを呼び出すと、すべての呼び出しが前の値に置き換えられるので、ループの終了後にリストの最後の単語が表示されます – PrfctByDsgn

+0

テキストをmEditTextから印刷します。 –

答えて

1

ループの反復ごとにあなたがtextViewに新しいテキストを設定するので、それは、そう古いテキストがループから新しいもので上書きされています、さらにあなたは、それは無意味と最適ではないですが、ループ内でtextView何回も宣言しますそれは遅くなるでしょう。代わりに、このコードの :

for(String object: objects) 
{ 
    TextView outputPigLatin = (TextView)findViewById(R.id.txtPigLatin); 
    outputPigLatin.setText(String.valueOf(object)); 

} 

使用これは、TextView外ループを入れて、そしてあまりにもループの外に一度だけのテキストを設定します。

TextView outputPigLatin = (TextView)findViewById(R.id.txtPigLatin); 
String myText = null; 
for(String object: objects) 
{ 
    myText += object+", "; 

} 
outputPigLatin.setText(myText); 

あなたは百のような(印刷する言葉をたくさん持っている場合これで最後の行を置き換えるために

TextView outputPigLatin = (TextView)findViewById(R.id.txtPigLatin); 
StringBuilder myText = new StringBuilder(); 
for(String object: objects) 
{ 
    myText.append(object).append(", "); 

} 
outputPigLatin.setText(myText.toString()); 
関連する問題