我注意到一些冗余代码,我认为这是一种可以使用迭代的情况。我想出了这个解决方案,并通过电子邮件发送给我的教授。通过EditText对象迭代
他回答说:
在这个例子中,虽然该解决方案以有限的方式工作,你需要更多的结构正确地做你正在尝试做的。你所能做的就是创建一个需要重置方法的接口,让所有控件实现这个接口并提供重置方法,通过控件作为接口类型的集合进行循环,然后调用重置。
好的。这种说法很有道理。我知道如何使用重置方法实现接口。然而,“让你的所有控件都实现这个接口......通过控件回放”令我感到困惑。任何人都可以阐明我如何实施这一战略?
此外,如果有更好的解决方案,我全部耳朵。谢谢!
public class MainAddressForm extends AppCompatActivity {
Button cmdOK;
Button cmdClear;
EditText editFirst;
EditText editLast;
EditText editAddress;
EditText editTown;
EditText editState;
EditText editZip;
String first, last, address, town, state, zip;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_address_form);
}
public void onClick(View view) {
if (cmdOK.getId() == view.getId()) {
first = editFirst.getText().toString();
last = editLast.getText().toString();
address = editAddress.getText().toString();
town = editTown.getText().toString();
state = editState.getText().toString();
zip = editZip.getText().toString();
Toast.makeText(getApplicationContext(), "Hi " + first + " " + last + "" + address + " " + town + " " + state + " " + zip + ".", Toast.LENGTH_SHORT).show();
}
if (cmdClear.getId() == view.getId()) {
setTexts(editFirst, editLast, editAddress, editTown, editState, editZip);
}
}
public void setTexts(EditText first, EditText last, EditText address, EditText town, EditText state, EditText zip){
List<EditText> clearTextFields = new ArrayList<>();
Iterator<EditText> itr = clearTextFields.iterator();
clearTextFields.add(first);
clearTextFields.add(last);
clearTextFields.add(address);
clearTextFields.add(town);
clearTextFields.add(state);
clearTextFields.add(zip);
while(itr.hasNext()){
itr.next().setText("");
}
}
}
这是完美的。我将编辑该问题以包含XML。这是一个线性布局。谢谢。 –