レイアウトのすべてのEditText
フィールドを_Clear Button
_でクリアするにはどうすればよいですか。約10の異なるEditTexts
を持つ登録アクティビティがあります。具体的にそれぞれの参照を取得し、set.Text("")
;を取得できることを知っています。しかし、よりダイナミックでエレガントな方法を探しています。おそらくLayout
を取得し、そこにあるすべての項目をループしてEditText
型を探し、それらを_""
_に設定します。しかし、どうやってそれを行うのかわからず、それをウェブ上で検索しようとしましたが、運はありませんでした。サンプルコードはありますか?
@Pixieによる答えは素晴らしいですが、もっと良くしたいと思います。
このメソッドは、すべてのEditTextが単一の(1つの)レイアウトにある場合にのみ正常に機能しますが、ネストされたレイアウトが多数ある場合、このコードはそれらを処理しません。
しばらく頭をかいた後、私は次の解決策を作りました:
private void clearForm(ViewGroup group) {
for (int i = 0, count = group.getChildCount(); i < count; ++i) {
View view = group.getChildAt(i);
if (view instanceof EditText) {
((EditText)view).setText("");
}
if(view instanceof ViewGroup && (((ViewGroup)view).getChildCount() > 0))
clearForm((ViewGroup)view);
}
}
このメソッドを使用するには、次の方法で呼び出します。
clearForm((ViewGroup) findViewById(R.id.sign_up));
R.id.sign_upをXMLファイルのルートレイアウトのIDに置き換えることができる場所。
これが私のような多くの人々に役立つことを願っています。
:)
ビューグループ内のすべての子を反復処理し、EditText
フィールドをすべてクリアできます。
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("");
}
}
editText.getText().clear();
を使用します
任意のアクションのonclickの後、ステップの下で行う
((EditText) findViewById(R.id.yoursXmlId)).setText("");
または、すべての子を反復してすべてのEditTextフィールドをクリアします。
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("");
}
}
またはシンプルな下のステップを使用してください:
editText.getText().clear();
役立つかもしれません。
私の場合、これを実行しました。
public static void resetForm(ViewGroup group) {
for (int i = 0, count = group.getChildCount(); i < count; ++i) {
View view = group.getChildAt(i);
if (view instanceof EditText) {
((EditText) view).getText().clear();
}
if (view instanceof RadioGroup) {
((RadioButton)((RadioGroup) view).getChildAt(0)).setChecked(true);
}
if (view instanceof Spinner) {
((Spinner) view).setSelection(0);
}
if (view instanceof ViewGroup && (((ViewGroup) view).getChildCount() > 0))
resetForm((ViewGroup) view);
}
}
これをネストされたLinearLayoutに使用して、EditTextとRadioButtonをクリアしました
//メソッドclear private void clear(ViewGroup group){for(int i = 0、count = group.getChildCount(); i
if(view instanceof LinearLayout)
{
clear((ViewGroup) view);
}
else if(view instanceof EditText)
{
((EditText) view).getText().clear();
}
if (view instanceof RadioButton)
{
((RadioButton) view).setChecked(false);
}
}//end for
}//end method clear
ボタンの機能にこれを入力します
finish();
startActivity(this,YourCurrentActivity.class);
それと同じくらい簡単。ようこそ。
あなたはいつでもこれを行うことができます...それは私のために働いています:
mClearButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditName.getText().clear();
mEditSummary.getText().clear();
mEditPrice.getText().clear();
mEditQuantitiy.getText().clear();
}
});
この方法では、すべてのフィールドを一度クリアする太いボタンが1つあります