动态添加时如何检查EditText是否有文本?
How to check EditText has text or not when added dynamically?
我使用布局充气器
添加了 3 个 EditTexts 和 一个按钮
下面是我的java代码:
mAddButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (!et_boiler_make_boiler_row.getText().toString().equalsIgnoreCase("")) {
onAddNewClicked();
buttonRemove.setVisibility(View.VISIBLE);
} else {
Toast.makeText(ConsumerCompanyProfileDetails4.this, "Can not add more rows. :(",
Toast.LENGTH_SHORT).show();
}
}
});
private void onAddNewClicked() {
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View addView = layoutInflater.inflate(R.layout.boiler_row, null);
buttonRemove = (ImageView) addView.findViewById(R.id.remove);
et_boiler_make_boiler_row = (EditText) addView.findViewById(R.id.et_boiler_make_boiler_row);
et_capacity_boiler_row = (EditText) addView.findViewById(R.id.et_capacity_boiler_row);
et_estd_year_boiler_row = (EditText) addView.findViewById(R.id.et_estd_year_boiler_row);
buttonRemove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((LinearLayout) addView.getParent()).removeView(addView);
}
});
mContainerView.addView(addView);
}
现在我想在添加新行之前检查所有 3 个 EditText 是否都具有某些值。即我想为在添加新行之前动态添加的 EditTexts 添加验证。
我还想知道如何从添加的 EditText 中获取值。
请帮忙!
将 edittext 视图保存在 List
中。在使用 for-each
添加新的编辑文本视图之前检查列表,并使用 edittext.getText().toString()
获取每个编辑文本的文本。现在您可以检查 isEmpty()
或您想要的任何内容。
您可以迭代 mContainerView childrens
for (int i = 0; i < mContainerView.getChildCount(); i++) { // check all rows
View v = mContainerView.getChildAt(i);
EditText editText = (EditText)view.findViewById(R.id.et_capacity_boiler_row);
//do whatever you want
}
或者只是 select 最后一个索引
View v = mContainerView.getChildAt(mContainerView.getChildCount()-1);
EditText editText = (EditText)view.findViewById(R.id.et_capacity_boiler_row);
//do whatever you want
(假设 mContainerView 仅包含添加的视图)
有很多方法可以做到这一点,请查看我的以下解决方案。
在添加新行的同时,为所有编辑文本添加标签(某些值对所有内容都应该是唯一的)。
对于 exe ,
et_boiler_make_boiler_row = (EditText) addView.findViewById(R.id.et_boiler_make_boiler_row);
et_boiler_make_boiler_row.setTag(1);
et_capacity_boiler_row = (EditText) addView.findViewById(R.id.et_capacity_boiler_row);
et_capacity_boiler_row.setTag(1);
et_estd_year_boiler_row = (EditText) addView.findViewById(R.id.et_estd_year_boiler_row);
et_estd_year_boiler_row.setTag(1);
并在需要时检查标签并完成您的工作。
请试试这个...我想它会对你有所帮助。
String[] str = {"AAA","BBB","CCC"};
mAddButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (!str[0].equalsIgnoreCase("") && !str[1].equalsIgnoreCase("") && !str[2].equalsIgnoreCase("")) {
onAddNewClicked();
str = {"","",""};
} else {
Toast.makeText(ConsumerCompanyProfileDetails4.this, "Can not add more rows. :(",
Toast.LENGTH_SHORT).show();
}
}
});
和类似的方法来检查黑色值是否可用。
private void onAddNewClicked() {
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View addView = layoutInflater.inflate(R.layout.boiler_row, null);
ImageView buttonRemove = (ImageView) addView.findViewById(R.id.remove);
EditText et_boiler_make_boiler_row = (EditText) addView.findViewById(R.id.et_boiler_make_boiler_row);
EditText et_capacity_boiler_row = (EditText) addView.findViewById(R.id.et_capacity_boiler_row);
EditText et_estd_year_boiler_row = (EditText) addView.findViewById(R.id.et_estd_year_boiler_row);
et_boiler_make_boiler_row.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
str[0] = s;
}
@Override
public void afterTextChanged(Editable s) {
}
});
et_capacity_boiler_row.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
str[1] = s;
}
@Override
public void afterTextChanged(Editable s) {
}
});
et_estd_year_boiler_row.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
str[2] = s;
}
@Override
public void afterTextChanged(Editable s) {
}
});
buttonRemove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((LinearLayout) addView.getParent()).removeView(addView);
}
});
mContainerView.addView(addView);
}
在此解决方案中,您将检查用户是否输入了所有三个 EditText 值。
如果用户输入某些内容而不是将其删除,那么它也会为您提供空白值。
所以,它对你有帮助..我希望这个解决方案能够满足你的要求。
我使用布局充气器
添加了 3 个 EditTexts 和 一个按钮下面是我的java代码:
mAddButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (!et_boiler_make_boiler_row.getText().toString().equalsIgnoreCase("")) {
onAddNewClicked();
buttonRemove.setVisibility(View.VISIBLE);
} else {
Toast.makeText(ConsumerCompanyProfileDetails4.this, "Can not add more rows. :(",
Toast.LENGTH_SHORT).show();
}
}
});
private void onAddNewClicked() {
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View addView = layoutInflater.inflate(R.layout.boiler_row, null);
buttonRemove = (ImageView) addView.findViewById(R.id.remove);
et_boiler_make_boiler_row = (EditText) addView.findViewById(R.id.et_boiler_make_boiler_row);
et_capacity_boiler_row = (EditText) addView.findViewById(R.id.et_capacity_boiler_row);
et_estd_year_boiler_row = (EditText) addView.findViewById(R.id.et_estd_year_boiler_row);
buttonRemove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((LinearLayout) addView.getParent()).removeView(addView);
}
});
mContainerView.addView(addView);
}
现在我想在添加新行之前检查所有 3 个 EditText 是否都具有某些值。即我想为在添加新行之前动态添加的 EditTexts 添加验证。
我还想知道如何从添加的 EditText 中获取值。
请帮忙!
将 edittext 视图保存在 List
中。在使用 for-each
添加新的编辑文本视图之前检查列表,并使用 edittext.getText().toString()
获取每个编辑文本的文本。现在您可以检查 isEmpty()
或您想要的任何内容。
您可以迭代 mContainerView childrens
for (int i = 0; i < mContainerView.getChildCount(); i++) { // check all rows
View v = mContainerView.getChildAt(i);
EditText editText = (EditText)view.findViewById(R.id.et_capacity_boiler_row);
//do whatever you want
}
或者只是 select 最后一个索引
View v = mContainerView.getChildAt(mContainerView.getChildCount()-1);
EditText editText = (EditText)view.findViewById(R.id.et_capacity_boiler_row);
//do whatever you want
(假设 mContainerView 仅包含添加的视图)
有很多方法可以做到这一点,请查看我的以下解决方案。
在添加新行的同时,为所有编辑文本添加标签(某些值对所有内容都应该是唯一的)。 对于 exe ,
et_boiler_make_boiler_row = (EditText) addView.findViewById(R.id.et_boiler_make_boiler_row);
et_boiler_make_boiler_row.setTag(1);
et_capacity_boiler_row = (EditText) addView.findViewById(R.id.et_capacity_boiler_row);
et_capacity_boiler_row.setTag(1);
et_estd_year_boiler_row = (EditText) addView.findViewById(R.id.et_estd_year_boiler_row);
et_estd_year_boiler_row.setTag(1);
并在需要时检查标签并完成您的工作。
请试试这个...我想它会对你有所帮助。
String[] str = {"AAA","BBB","CCC"};
mAddButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (!str[0].equalsIgnoreCase("") && !str[1].equalsIgnoreCase("") && !str[2].equalsIgnoreCase("")) {
onAddNewClicked();
str = {"","",""};
} else {
Toast.makeText(ConsumerCompanyProfileDetails4.this, "Can not add more rows. :(",
Toast.LENGTH_SHORT).show();
}
}
});
和类似的方法来检查黑色值是否可用。
private void onAddNewClicked() {
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View addView = layoutInflater.inflate(R.layout.boiler_row, null);
ImageView buttonRemove = (ImageView) addView.findViewById(R.id.remove);
EditText et_boiler_make_boiler_row = (EditText) addView.findViewById(R.id.et_boiler_make_boiler_row);
EditText et_capacity_boiler_row = (EditText) addView.findViewById(R.id.et_capacity_boiler_row);
EditText et_estd_year_boiler_row = (EditText) addView.findViewById(R.id.et_estd_year_boiler_row);
et_boiler_make_boiler_row.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
str[0] = s;
}
@Override
public void afterTextChanged(Editable s) {
}
});
et_capacity_boiler_row.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
str[1] = s;
}
@Override
public void afterTextChanged(Editable s) {
}
});
et_estd_year_boiler_row.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
str[2] = s;
}
@Override
public void afterTextChanged(Editable s) {
}
});
buttonRemove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((LinearLayout) addView.getParent()).removeView(addView);
}
});
mContainerView.addView(addView);
}
在此解决方案中,您将检查用户是否输入了所有三个 EditText 值。 如果用户输入某些内容而不是将其删除,那么它也会为您提供空白值。 所以,它对你有帮助..我希望这个解决方案能够满足你的要求。