2012-03-25 55 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

相关问题