将 editText 的内容输出到数组以在 textView 中显示
Outputting the contents of an editText to an array to be displayed in a textView
我在将数据从 editText 输出到 textView 时遇到问题。我的应用程序要求用户输入,然后通过将它们与其他单词连接在一起并在末尾显示在 textView 中的一个字符串中来显示它,尽管出于测试目的,我已经使 textView 始终可见。使用按钮询问下一个单词。问题是我一次只能显示数组的一个元素。例如,如果我在我的 editText 中输入单词 "table",然后按下按钮。 textView 将显示 "there is a table that is "。一旦我输入另一个词,例如 "yellow" 并按下它显示的按钮 "there is a that is yellow"
这是我的代码
public class MainActivity extends AppCompatActivity {
int i = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chooseGame();
}
public String enterWord() {
String[] array = {"Adjective", "Adjective", "Proper Noun", "Name"};
String entry;
if (array[i].equals("Adjective")) {
entry = "Enter an ";
} else {
entry = "Enter a ";
}
return entry;
}
public void nextWord(View view) { //nextWord is the cnclick of the button
i++;
getNextWord();
getInputs();
}
public void getNextWord() {
String[] array = {"Adjective", "Adjective", "Proper Noun", "Name"};
TextView wordTextView = findViewById(R.id.wordTextView);
Button nextButton = findViewById(R.id.nextButton);
EditText editTextView = findViewById(R.id.enterEditText);
String displayText = enterWord() + array[i];
String displayHint = array[i];
wordTextView.setText(displayText);
editTextView.setHint(displayHint);
}
}
public void chooseGame() {
final ArrayList<String> arrayList = new ArrayList<String>();
final TextView wordTextView = findViewById(R.id.wordTextView);
final EditText editTextView = findViewById(R.id.enterEditText);
final Button nextButton = findViewById(R.id.nextButton);
ArrayList<String> gamesArrayList = new ArrayList<String>();
gamesArrayList.add("A Vegan's Worst Nightmare");
gamesArrayList.add("The Wet Floor Sign");
gamesArrayList.add("The Meaning of life");
gamesArrayList.add("Campfire Story");
gamesArrayList.add("The Crocobearamouse");
final ListView gamesListView = findViewById(R.id.gamesListView);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
gamesArrayList);
gamesListView.setAdapter(arrayAdapter);
gamesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position <= 5 && position >= 0) {
gamesListView.setVisibility(View.INVISIBLE);
editTextView.setVisibility((View.VISIBLE));
wordTextView.setVisibility((View.VISIBLE));
nextButton.setVisibility(View.VISIBLE);
}
}
}
);
}
public void getInputs() {
TextView finalTextView = findViewById(R.id.finalTextView);
EditText editTextView = findViewById(R.id.enterEditText);
String[] inputsArray = {"","","","",""};
inputsArray[i] = editTextView.getText().toString();
String inputs = "There is a " + inputsArray[0] + " that is" + inputsArray[1];
finalTextView.setText(inputs);
}
}
这是我的XML
<TextView
android:id="@+id/wordTextView"
android:layout_width="418dp"
android:layout_height="146dp"
android:layout_marginTop="84dp"
android:text="Enter a noun"
android:gravity="center"
android:textSize="30sp"
android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/enterEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="244dp"
android:ems="10"
android:hint="Noun"
android:visibility="invisible"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/wordTextView" />
<Button
android:id="@+id/nextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="180dp"
android:onClick="nextWord"
android:text="Next"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/enterEditText"
app:layout_constraintVertical_bias="0.0" />
<ListView
android:id="@+id/gamesListView"
android:layout_width="404dp"
android:layout_height="647dp"
tools:layout_editor_absoluteX="3dp"
tools:layout_editor_absoluteY="84dp" />
<TextView
android:id="@+id/finalTextView"
android:layout_width="157dp"
android:layout_height="98dp"
app:layout_constraintBottom_toTopOf="@+id/enterEditText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
在getInputs()方法中,每次都创建一个新数组,这会清除之前添加的值。
将以下行移到 getInputs() 方法之外,以便整个 class 都可用(例如,在 int i = -1; 行下方)
String[] inputsArray = {"","","","",""};
这样你就不会每次都覆盖数组,它会显示 "there is a table that is yellow" 而不是 "there is a that is yellow"。
我在将数据从 editText 输出到 textView 时遇到问题。我的应用程序要求用户输入,然后通过将它们与其他单词连接在一起并在末尾显示在 textView 中的一个字符串中来显示它,尽管出于测试目的,我已经使 textView 始终可见。使用按钮询问下一个单词。问题是我一次只能显示数组的一个元素。例如,如果我在我的 editText 中输入单词 "table",然后按下按钮。 textView 将显示 "there is a table that is "。一旦我输入另一个词,例如 "yellow" 并按下它显示的按钮 "there is a that is yellow"
这是我的代码
public class MainActivity extends AppCompatActivity {
int i = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chooseGame();
}
public String enterWord() {
String[] array = {"Adjective", "Adjective", "Proper Noun", "Name"};
String entry;
if (array[i].equals("Adjective")) {
entry = "Enter an ";
} else {
entry = "Enter a ";
}
return entry;
}
public void nextWord(View view) { //nextWord is the cnclick of the button
i++;
getNextWord();
getInputs();
}
public void getNextWord() {
String[] array = {"Adjective", "Adjective", "Proper Noun", "Name"};
TextView wordTextView = findViewById(R.id.wordTextView);
Button nextButton = findViewById(R.id.nextButton);
EditText editTextView = findViewById(R.id.enterEditText);
String displayText = enterWord() + array[i];
String displayHint = array[i];
wordTextView.setText(displayText);
editTextView.setHint(displayHint);
}
}
public void chooseGame() {
final ArrayList<String> arrayList = new ArrayList<String>();
final TextView wordTextView = findViewById(R.id.wordTextView);
final EditText editTextView = findViewById(R.id.enterEditText);
final Button nextButton = findViewById(R.id.nextButton);
ArrayList<String> gamesArrayList = new ArrayList<String>();
gamesArrayList.add("A Vegan's Worst Nightmare");
gamesArrayList.add("The Wet Floor Sign");
gamesArrayList.add("The Meaning of life");
gamesArrayList.add("Campfire Story");
gamesArrayList.add("The Crocobearamouse");
final ListView gamesListView = findViewById(R.id.gamesListView);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
gamesArrayList);
gamesListView.setAdapter(arrayAdapter);
gamesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position <= 5 && position >= 0) {
gamesListView.setVisibility(View.INVISIBLE);
editTextView.setVisibility((View.VISIBLE));
wordTextView.setVisibility((View.VISIBLE));
nextButton.setVisibility(View.VISIBLE);
}
}
}
);
}
public void getInputs() {
TextView finalTextView = findViewById(R.id.finalTextView);
EditText editTextView = findViewById(R.id.enterEditText);
String[] inputsArray = {"","","","",""};
inputsArray[i] = editTextView.getText().toString();
String inputs = "There is a " + inputsArray[0] + " that is" + inputsArray[1];
finalTextView.setText(inputs);
}
}
这是我的XML
<TextView
android:id="@+id/wordTextView"
android:layout_width="418dp"
android:layout_height="146dp"
android:layout_marginTop="84dp"
android:text="Enter a noun"
android:gravity="center"
android:textSize="30sp"
android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/enterEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="244dp"
android:ems="10"
android:hint="Noun"
android:visibility="invisible"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/wordTextView" />
<Button
android:id="@+id/nextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="180dp"
android:onClick="nextWord"
android:text="Next"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/enterEditText"
app:layout_constraintVertical_bias="0.0" />
<ListView
android:id="@+id/gamesListView"
android:layout_width="404dp"
android:layout_height="647dp"
tools:layout_editor_absoluteX="3dp"
tools:layout_editor_absoluteY="84dp" />
<TextView
android:id="@+id/finalTextView"
android:layout_width="157dp"
android:layout_height="98dp"
app:layout_constraintBottom_toTopOf="@+id/enterEditText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
在getInputs()方法中,每次都创建一个新数组,这会清除之前添加的值。
将以下行移到 getInputs() 方法之外,以便整个 class 都可用(例如,在 int i = -1; 行下方)
String[] inputsArray = {"","","","",""};
这样你就不会每次都覆盖数组,它会显示 "there is a table that is yellow" 而不是 "there is a that is yellow"。