Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中管理多个editText_Java_Android_Android Edittext - Fatal编程技术网

Java 在Android中管理多个editText

Java 在Android中管理多个editText,java,android,android-edittext,Java,Android,Android Edittext,可能重复: 各位 我正在尝试构建我的第一个Android应用程序,用于进行RMS(均方根)误差计算。为此,我需要几个实验点输入,这是在EditText中手动完成的。所以我在一个版面中有40个编辑文本。问题是,当涉及到管理他们时,我有以下几点: public class InsertarData extends Activity implements OnClickListener { EditText x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14

可能重复:

各位

我正在尝试构建我的第一个Android应用程序,用于进行RMS(均方根)误差计算。为此,我需要几个实验点输入,这是在EditText中手动完成的。所以我在一个版面中有40个编辑文本。问题是,当涉及到管理他们时,我有以下几点:

public class InsertarData extends Activity implements OnClickListener {
EditText x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17;
EditText y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17;
float [] datosX;
float [] datosY;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.insertardatos);
    x1=(EditText)findViewById(R.id.x1Et);
    x2=(EditText)findViewById(R.id.x2Et);
    x3=(EditText)findViewById(R.id.x3Et);
    x4=(EditText)findViewById(R.id.x4Et);
    x5=(EditText)findViewById(R.id.x5Et);
    x6=(EditText)findViewById(R.id.x6Et);
    x7=(EditText)findViewById(R.id.x7Et);
    x8=(EditText)findViewById(R.id.x8Et);
    x9=(EditText)findViewById(R.id.x9Et);
    x10=(EditText)findViewById(R.id.x10Et);
    x11=(EditText)findViewById(R.id.x11Et);
    x12=(EditText)findViewById(R.id.x12Et);
    x13=(EditText)findViewById(R.id.x13Et);
    x14=(EditText)findViewById(R.id.x14Et);
    x15=(EditText)findViewById(R.id.x15Et);
    x16=(EditText)findViewById(R.id.x17Et);
    x17=(EditText)findViewById(R.id.x17Et);

    y1=(EditText)findViewById(R.id.y1Et);
    y2=(EditText)findViewById(R.id.y2Et);
    y3=(EditText)findViewById(R.id.y3Et);
    y4=(EditText)findViewById(R.id.y4Et);
    y5=(EditText)findViewById(R.id.y5Et);
    y6=(EditText)findViewById(R.id.y6Et);
    y7=(EditText)findViewById(R.id.y7Et);
    y8=(EditText)findViewById(R.id.y8Et);
    y9=(EditText)findViewById(R.id.y9Et);
   y10=(EditText)findViewById(R.id.y10Et);
   y11=(EditText)findViewById(R.id.y11Et);
   y12=(EditText)findViewById(R.id.y12Et);
   y13=(EditText)findViewById(R.id.y13Et);
   y14=(EditText)findViewById(R.id.y14Et);
   y15=(EditText)findViewById(R.id.y15Et);
   y16=(EditText)findViewById(R.id.y16Et);
   y17=(EditText)findViewById(R.id.y17Et);

   Button continuar=(Button)findViewById(R.id.continuarBtn);
   continuar.setOnClickListener(this);

}

@Override
public void onClick(View e) {
    switch(e.getId()){
        case R.id.continuarBtn:{
        datosX=new float[17];
        datosX[0]=Float.parseFloat(x1.getText().toString());
        datosX[1]=Float.parseFloat(x2.getText().toString());
        datosX[2]=Float.parseFloat(x3.getText().toString());
        datosX[3]=Float.parseFloat(x4.getText().toString());
        datosX[4]=Float.parseFloat(x5.getText().toString());
        datosX[5]=Float.parseFloat(x6.getText().toString());
        datosX[6]=Float.parseFloat(x7.getText().toString());
        datosX[7]=Float.parseFloat(x8.getText().toString());
        datosX[8]=Float.parseFloat(x9.getText().toString());
        datosX[9]=Float.parseFloat(x10.getText().toString());
        datosX[10]=Float.parseFloat(x11.getText().toString());
        datosX[11]=Float.parseFloat(x12.getText().toString());
        datosX[12]=Float.parseFloat(x13.getText().toString());
        datosX[13]=Float.parseFloat(x14.getText().toString());
        datosX[14]=Float.parseFloat(x15.getText().toString());
        datosX[15]=Float.parseFloat(x16.getText().toString());
        datosX[16]=Float.parseFloat(x17.getText().toString());

        datosY[0]=Float.parseFloat(y1.getText().toString());
        datosY[1]=Float.parseFloat(y2.getText().toString());
        datosY[2]=Float.parseFloat(y3.getText().toString());
        datosY[3]=Float.parseFloat(y4.getText().toString());
        datosY[4]=Float.parseFloat(y5.getText().toString());
        datosY[5]=Float.parseFloat(y6.getText().toString());
        datosY[6]=Float.parseFloat(y7.getText().toString());
        datosY[7]=Float.parseFloat(y8.getText().toString());
        datosY[8]=Float.parseFloat(y9.getText().toString());
        datosY[9]=Float.parseFloat(y10.getText().toString());
        datosY[10]=Float.parseFloat(y11.getText().toString());
        datosY[11]=Float.parseFloat(y12.getText().toString());
        datosY[12]=Float.parseFloat(y13.getText().toString());
        datosY[13]=Float.parseFloat(y14.getText().toString());
        datosY[14]=Float.parseFloat(y15.getText().toString());
        datosY[15]=Float.parseFloat(y16.getText().toString());
        datosY[16]=Float.parseFloat(y17.getText().toString());

        }
        }
    }

}
这“起作用”(需要完成将datosX和datosY传递给另一个活动。但是,在此之前,我需要知道edittext是否为空,并且我无法想象在每个parseFloat之前执行if(edittext.getText().toString()!=null)之类的操作

有没有更好的方法来管理大量EditText并知道它们是否为空?我想到了一个EditText数组,并做了如下操作:

EditText editarray[17];
editarray[0]=(EditText)findViewById(R.id.edittext0);
是这样做的吗


非常感谢您提前阅读和回答。对不起,我的英语不好。

这些EditText控件是在彼此下面吗?如果是这样,我会使用ListView,并为每个EditText单独设置一行。这样,在列表的适配器中处理这么多EditText就更容易了。由于ListView是虚拟化的,它也需要更少的内存。但是我想UI的使用会很糟糕。

这些EditText控件是不是在彼此的下面?如果是这样,我会使用一个ListView,并且每个EditText都有一个单独的行。这样,在列表的适配器中处理这么多EditText就更容易了。由于ListView是虚拟化的,它也需要更少的内存。但我想UI只是terrib可以使用。

您可以通过使用资源获取视图的id,这样管理多个视图就更容易了。是的,数组似乎是一个很好的解决方案来管理这样的编辑文本

要访问第1个editText,假设您将editText的id设置为
edittext0
,则您可以通过访问它

int idsArray[40];
for(int i=0; i<40; i++){
  String textString =  "edittext" + Integer.toString(i);
  int editId = getResources.getIdentifier(textString, "id", getPackageName());
  // store the id's in an array
  idsArray[i] = editId;
}
访问版面中的每个编辑文本,然后检查编辑文本是否包含数据


HTH.

您可以通过使用资源获取视图的id,这样管理多个视图就更容易了。是的,数组似乎是一个很好的解决方案来管理这样的编辑文本

要访问第1个editText,假设您将editText的id设置为
edittext0
,则您可以通过访问它

int idsArray[40];
for(int i=0; i<40; i++){
  String textString =  "edittext" + Integer.toString(i);
  int editId = getResources.getIdentifier(textString, "id", getPackageName());
  // store the id's in an array
  idsArray[i] = editId;
}
访问版面中的每个编辑文本,然后检查编辑文本是否包含数据


HTH.

您还可以迭代布局的子项,并确定其中哪些是EditText

使用EditText小部件进行布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<EditText  
    android:id="@+id/text1"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<EditText  
    android:id="@+id/text2"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<Button 
    android:id="@+id/button"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" />
</LinearLayout>

迭代:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    LinearLayout layout = (LinearLayout)findViewById(R.id.layout);

    for (int i = 0; i < layout.getChildCount(); i++) {
        View child = layout.getChildAt(i);
        Log.i("tag", child.getClass().getCanonicalName());
    }
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout布局=(LinearLayout)findViewById(R.id.layout);
对于(int i=0;i
您还可以迭代版面的子项并确定其中哪些是EditText

使用EditText小部件进行布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<EditText  
    android:id="@+id/text1"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<EditText  
    android:id="@+id/text2"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<Button 
    android:id="@+id/button"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" />
</LinearLayout>

迭代:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    LinearLayout layout = (LinearLayout)findViewById(R.id.layout);

    for (int i = 0; i < layout.getChildCount(); i++) {
        View child = layout.getChildAt(i);
        Log.i("tag", child.getClass().getCanonicalName());
    }
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout布局=(LinearLayout)findViewById(R.id.layout);
对于(int i=0;i
像这样的东西怎么样

EditText xE, yE;

float x, y;

int[] xIds = { R.id.x1et, R.id.x2et, /*...etc*/ };
int[] yIds = { R.id.y1et, R.id.y2et, /*...etc*/ };

for(int i = 0; i < xIds.length && i < yIds.length; i++) {
    xE = (EditText)findViewById(xIds[i]);
    yE = (EditText)findViewById(yIds[i]);
    try { 
        x = Float.parseFloat(xE.getText().toString());
        y = Float.parseFloat(yE.getText().toString());
        //do whatever you need with the data here
    } catch (NumberFormatException e) {
        //Either there was an invalid input, or field was empty
        //You can add extra logic here to check them for empty fields
        //or just exit the loop here
    }
}
edittextxe,yE;
浮动x,y;
int[]xIds={R.id.x1et,R.id.x2et,/*…etc*/};
int[]yIds={R.id.y1et,R.id.y2et,/*…etc*/};
对于(int i=0;i
像这样的东西怎么样

EditText xE, yE;

float x, y;

int[] xIds = { R.id.x1et, R.id.x2et, /*...etc*/ };
int[] yIds = { R.id.y1et, R.id.y2et, /*...etc*/ };

for(int i = 0; i < xIds.length && i < yIds.length; i++) {
    xE = (EditText)findViewById(xIds[i]);
    yE = (EditText)findViewById(yIds[i]);
    try { 
        x = Float.parseFloat(xE.getText().toString());
        y = Float.parseFloat(yE.getText().toString());
        //do whatever you need with the data here
    } catch (NumberFormatException e) {
        //Either there was an invalid input, or field was empty
        //You can add extra logic here to check them for empty fields
        //or just exit the loop here
    }
}
edittextxe,yE;
浮动x,y;
int[]xIds={R.id.x1et,R.id.x2et,/*…etc*/};
int[]yIds={R.id.y1et,R.id.y2et,/*…etc*/};
对于(int i=0;i
是的,它们是不同的。正如你所说,我有一个表格布局,每行两个EditText,两列,分别代表X和Y。我想让你知道是否有更好的方法将所有EditText解析为浮点数——并知道它们从哪个EditText开始为空——感谢!+1提到内存管理是的,它们是不同的。正如你所说,我有一个表格布局,每行两个EditText,每列两个X和Y。我想让你知道,是否有更好的方法将所有EditText解析为浮点数——并知道它们从哪个EditText开始为空——谢谢!+1提到内存管理我想我会这样做,这正是我需要的,也是我想要的我想做,但我不知道如何设置阵列。你们太棒了,谢谢!!我想我会走这条路,这正是我需要和正在考虑做的,但我不知道如何设置阵列。你们太棒了,谢谢!!