我是Android的新手,我正在尝试创建一个应用程序,其中用户在inputType = textMultiLine的文本框中输入数组。问题是我希望这样做,以便每当用户点击进入时,应用程序接受下一个数组元素的输入,而不是将文本框中的整个文本视为一个元素。代码如下:
EditText input = findViewById(R.id.inputtext);
Button show = findViewById(R.id.button);
TextView output = findViewById(R.id.output);
String [] name = new String[3];
for (int i = 0 ; i < 3 ; i++)
{
name[i] = input.getText().toString();
output.setText(name[i]);
}
但是每当我在点击输入后尝试取名[1]时,app不会将下一行视为名称[2],而是将其视为名称[1]。例如,如果键入名称john,steve和frank,那么我应该得到一个这样的数组:
name[0] = john
name[1] = steve
name[2] = frank
但是每当我输入john时,按回车,键入steve,按回车键并输入frank,app将其视为:
name[0] = john
steve
frank
如果我将输出设置为这样:
output.setText(name[i] + i)
而不是得到这样的结果:
john 0
steve 1
frank 2
我得到这样的输出:
john
steve
frank2
非常感谢任何和所有帮助。
由于
=============================================== ================================================== ================================================== ===
编辑1
我尝试了这段代码,但没有用:
String name[] = input .getText().toString().split("\\r?\\n");
for (int i = 0 ; i < name.length; i++)
{
output.setText(name[i]);
}
当我输入john,steve和frank
时,仍然只是坦率地说答案 0 :(得分:0)
如果要将每一行放入不同的数组项:
String [] name = input.getText().toString().split("\n");
input.getText().toString()
为您提供包含整个 EditText 内容的字符串,其中的行以新行分隔 - “\ n”。您需要拆分此字符串以获取每一行。
答案 1 :(得分:0)
尝试以下代码
String name[] = input .getText().toString().split("\\r?\\n");
String disp="";
for (int i = 0 ; i < name.length; i++)
{
disp += name[i] +"\n";
}
output.setText(disp);
答案 2 :(得分:0)
以下示例可能会有用:
XML文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<EditText
android:id="@+id/edit_text"
style="@style/Widget.AppCompat.EditText"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_marginBottom="100dp"
android:inputType="textMultiLine"/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show"/>
<TextView
android:id="@+id/text_view"
style="@style/Widget.AppCompat.EditText"
android:layout_width="300dp"
android:layout_height="wrap_content"/>
</LinearLayout>
Java代码
final EditText input = findViewById(R.id.edit_text);
final Button show = findViewById(R.id.button);
final TextView output = findViewById(R.id.text_view);
show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
final String inputString = input.getText().toString();
if (!TextUtils.isEmpty(inputString)) {
final String newLine = System.getProperty("line.separator");
final String[] inputText = inputString.split(newLine);
String outputText = "";
for (int i = 0; i < inputText.length; i++) {
outputText += inputText[i];
if (i != inputText.length - 1) {
outputText += newLine;
}
}
output.setText(outputText);
}
}
});
}
You can download de APK here或here the complete source code
(另一种方式:简单!)在下面的代码中,没有必要对输入文本进行拆分。
final EditText input = findViewById(R.id.edit_text);
final Button show = findViewById(R.id.button);
final TextView output = findViewById(R.id.text_view);
show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
final String inputString = input.getText().toString();
if (!TextUtils.isEmpty(inputString)) {
output.setText(inputString);
}
}
});
请注意,您的代码是错误的,因为在每个循环中,您都会覆盖在上一个循环中设置的文本。