2012-03-25 54 views
0

嗨我需要根據一些數字動態顯示EditText框。我試過這樣的:如何在android應用程序開發中動態顯示texbox?

et1=(EditText) findViewById(R.id.editText1); 
    et1.setVisibility(View.INVISIBLE); 
    et2=(EditText) findViewById(R.id.editText2); 
    et2.setVisibility(View.INVISIBLE); 
    et3=(EditText) findViewById(R.id.editText3); 
    et3.setVisibility(View.INVISIBLE); 
    et4=(EditText) findViewById(R.id.editText3); 
    et4.setVisibility(View.INVISIBLE); 
    et5=(EditText) findViewById(R.id.editText3); 
    et5.setVisibility(View.INVISIBLE); 
    for(i=1;i<=wl;++i) 
    { 
    et+i.setVisibility(View.VISIBLE); 
    } 

我是新來android應用程序開發。我知道for循環中有什麼問題......任何人都可以修復它?也將不勝感激,如果有人想出一些其他方法來動態顯示EditText框

+0

你爲什麼不保持'et'在數組和循環在他們的變量? – jmishra 2012-03-25 11:42:16

回答

0

你不能在Java中執行「et + i」!

你可以創建ArrayList,然後把它放到et1,et2,et3 ...然後迭代。

0

你在想什麼可能的東西更像是這樣的:

EditText[] ets = new EditText[5]; 
int i; 
ets[0]=(EditText) findViewById(R.id.editText1); 
ets[0].setVisibility(View.INVISIBLE); 
ets[1]=(EditText) findViewById(R.id.editText2); 
ets[1].setVisibility(View.INVISIBLE); 
... 
ets[4]=(EditText) findViewById(R.id.editText3); 
ets[4].setVisibility(View.INVISIBLE); 
for(i=0;i<=4;++i) 
{ 
    ets[i].setVisibility(View.VISIBLE); 
} 

話又說回來,如果你使用findViewById,你可能不會需要一個數組的。只是說明你如何處理你在使用數組的問題。我想如果我正在做這樣的事情,我會更多地考慮以編程的方式創建EditText



這裏有個實用方法我有一個程序創建一個對話框,並在它的一些EditText的,希望這有助於。

public static void testNotification(final Activity activity) 
{ 
    Dialog dlg = new Dialog(activity); 
    dlg.setTitle("Notification Test"); 

    LinearLayout dlgView = new LinearLayout(activity); 
    dlgView.setOrientation(LinearLayout.VERTICAL); 
    dlg.addContentView(dlgView, new LayoutParams(200, 200)); 

    final EditText et1 = new EditText(activity); 
    et1.setText("ABC"); 
    dlgView.addView(et1); 

    final EditText et2 = new EditText(activity); 
    et2.setText("XYZ"); 
    dlgView.addView(et2); 

    Button btn = new Button(activity); 
    btn.setText("Go"); 
    dlgView.addView(btn); 

    et1.setWidth(LayoutParams.FILL_PARENT); 
    et2.setWidth(LayoutParams.FILL_PARENT); 
    btn.setWidth(LayoutParams.FILL_PARENT); 

    btn.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) 
    { 
     Util.doNotification(activity, et1.getText().toString(), et2.getText() 
      .toString()); 
    } 
    }); 
    dlg.show(); 
    return; 
} 
+0

ound你請給出一些動態創建這些文本框的想法? – 2012-03-25 20:34:33

+0

當然,我已經添加了一個實用的方法,通過編程創建自己的EditText' – dldnh 2012-03-25 20:45:52

0

你在做什麼不是correct.You能做到這樣

et1=(EditText) findViewById(R.id.editText1); 
et1.setVisibility(View.INVISIBLE); 
et2=(EditText) findViewById(R.id.editText2); 
et2.setVisibility(View.INVISIBLE); 
et3=(EditText) findViewById(R.id.editText3); 
et3.setVisibility(View.INVISIBLE); 
et4=(EditText) findViewById(R.id.editText4); 
et4.setVisibility(View.INVISIBLE); 
et5=(EditText) findViewById(R.id.editText5); 
et5.setVisibility(View.INVISIBLE); 
for(i=0;i<=4;i++) 
{ 
    String editTextName = editText+(i+1); 
    int resID = getResources().getIdentifier(editTextName , "id", getPackageName()); 
    EditText et = (EditText) findViewById(resID); 
    et.setVisibility(View.VISIBLE); 
} 
+0

我不明白這一點,也不能正常工作 – 2012-03-25 18:50:45

+0

我編輯了代碼,請檢查它 – Nishant 2012-03-26 02:02:17

+0

此代碼適用於您? – Nishant 2012-03-27 07:26:37

相關問題