我有一个片段,里面有大约30 EditText
。我想知道有什么方法可以抓住所有EditTexts
并清除其中的文本,而不必一个接一个地完成。
谢谢。
答案 0 :(得分:2)
如果您所有的编辑文本都在同一布局内(例如相对布局),则此方法应该起作用
ViewGroup group = (ViewGroup)findViewById(R.id.your_group);
for (int i = 0, count = group.getChildCount(); i < count; ++i) {
View view = group.getChildAt(i);
if (view instanceof EditText) {
((EditText)view).setText("");
}
}
答案 1 :(得分:1)
尝试这样的事情:
ArrayList<EditText> editTextsList = new ArrayList<EditText>();
for( int i = 0; i < myLayout.getChildCount(); i++ )
if( myLayout.getChildAt( i ) instanceof EditText )
editTextsList.add( (EditText) myLayout.getChildAt( i ) );
在editTextsList
上进行迭代,并对列表中的每个EditText
进行操作
我希望这对您有帮助
答案 2 :(得分:1)
是的,您可以使用以下方法。
public void clearStudentInfo(ViewGroup textViewsGroup) {
for (int i = 0, count = textViewsGroup.getChildCount(); i < count; ++i) {
View view = textViewsGroup.getChildAt(i);
// Check and confirm, is it is the TextView or not?
if (textViewsGroup instanceof EditText) {
((EditText)textViewsGroup).setText("");
}
}
}
单击清除按钮时可以调用该方法,如下所示。
...
Button btnClear = findViewById(R.id.btnClr);
...
btnClear.setOnClickListener(new View.OnClickListener) {
@Override
void onClick(...) {
clearStudentInfo((ViewGroup) findViewById(R.id.student_info));
}
谢谢