在 textview 中显示来自 edittext 的值
Display value from edittext in textview
我正在尝试在循环内以编程方式制作 EditText。
我目前在做什么:
public class MainActivity extends Activity {
int quan = 0;
LinearLayout linear;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
for (int i =0; i < quan; i++)
{
EditText myEditText = new EditText(this);
myEditText.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
linear.addView(myEditText);
}
}
}
但我想存储所有 EditText 的值并在某些 TextView 中显示它们
我如何从所有 EditText 中获取值?
您需要在您的 EditText
上调用 addTextChangedListener(TextWatcher watcher)
,观察者将在每次更改时收到 onTextChanged(CharSequence s, int start, int before, int count)
,您可以使用序列来更新您的 TextView
。
更多信息在这里:https://developer.android.com/reference/android/text/TextWatcher
实现这一点有两个简单的步骤:
- 在创建它们时将您的
EditText
添加到某种列表中。
- 当某些事件(例如按钮单击)发生时,读取
foreach
中的值。
我使用 StringBuilder 来减少在堆字符串池中创建的字符串的数量。
// 1 - Add all of your EditTexts inside some ArrayList as a member of class
private ArrayList mEditTexts = new ArrayList<EditText>();
// 2 - Add your EditTexts to @mEditTexts when you are creating them
...
...
mEditTexts.add(editText);
// 3 - In your event handler, when you need to get all values
StringBuilder stringBuilder = new StringBuilder()
for(EditText editText : mEditTexts) {
String content = editText.getText().toString().trim();
stringBuilder.append(content);
}
textView.setText(stringBuilder.toString());
我正在尝试在循环内以编程方式制作 EditText。
我目前在做什么:
public class MainActivity extends Activity {
int quan = 0;
LinearLayout linear;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
for (int i =0; i < quan; i++)
{
EditText myEditText = new EditText(this);
myEditText.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
linear.addView(myEditText);
}
}
}
但我想存储所有 EditText 的值并在某些 TextView 中显示它们 我如何从所有 EditText 中获取值?
您需要在您的 EditText
上调用 addTextChangedListener(TextWatcher watcher)
,观察者将在每次更改时收到 onTextChanged(CharSequence s, int start, int before, int count)
,您可以使用序列来更新您的 TextView
。
更多信息在这里:https://developer.android.com/reference/android/text/TextWatcher
实现这一点有两个简单的步骤:
- 在创建它们时将您的
EditText
添加到某种列表中。 - 当某些事件(例如按钮单击)发生时,读取
foreach
中的值。
我使用 StringBuilder 来减少在堆字符串池中创建的字符串的数量。
// 1 - Add all of your EditTexts inside some ArrayList as a member of class
private ArrayList mEditTexts = new ArrayList<EditText>();
// 2 - Add your EditTexts to @mEditTexts when you are creating them
...
...
mEditTexts.add(editText);
// 3 - In your event handler, when you need to get all values
StringBuilder stringBuilder = new StringBuilder()
for(EditText editText : mEditTexts) {
String content = editText.getText().toString().trim();
stringBuilder.append(content);
}
textView.setText(stringBuilder.toString());