我想要在 java 中使用 for 循环的其他布局的膨胀 edittext 的值

i want the value of inflated edittext with other layout using for loop in java

我需要膨胀的 editText 的值,我正在膨胀作为子布局的设计布局,MainActivity 是父布局。 下面是 MainActivity class

public class MainActivity extends AppCompatActivity {

 View array[];
 String text;
 LinearLayout container;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    EditText edittext1 = (EditText) findViewById(R.id.email);
    for (int i = 0; i < 4; i++) {
        LinearLayout myLayout = (LinearLayout) findViewById(R.id.linearlayout);
        View v = getLayoutInflater().inflate(R.layout.design, myLayout, false);
        myLayout.addView(v);
        int id = View.generateViewId();
        v.setId(id);          

        EditText edittext = (EditText) v.findViewById(R.id.edittext);
        text = edittext.getText().toString();

    }
    edittext1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplication(), "" + text, Toast.LENGTH_SHORT).show();
        }
    });

 }

}

这是存储对象和检索的总代码, 请阅读所有评论,

public class MainActivity extends AppCompatActivity {
View array[];
String text;
LinearLayout container;
// list of edittext
List<EditText> edtlist = new ArrayList()<EditText>;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    EditText edittext1 = (EditText) findViewById(R.id.email);
    for (int i = 0; i < 4; i++) {
        LinearLayout myLayout = (LinearLayout) findViewById(R.id.linearlayout);
        View v = getLayoutInflater().inflate(R.layout.design, myLayout, false);
        myLayout.addView(v);
        int id = View.generateViewId();
        v.setId(id);          

        EditText edittext = (EditText) v.findViewById(R.id.edittext);
    // store object in list
    edtlist.add(edittext);
        text = edittext.getText().toString();

    }
    edittext1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplication(), "" + text, Toast.LENGTH_SHORT).show();
        }
    });
    //  call this whenever you want in any event
    // here 0 is first edittext
    // you can get all text value using for loop
    //  list.get(0).getText().toString();
}
}

您正在寻找类似的东西,我不确定它是否有效,也可能无效。!它只是一个粗略的基于概念的代码,尚未实现。!

List<EditText> edtxtList;
List<String> edtxtStrList;


 for (int i = 0; i < 4; i++) {
        LinearLayout myLayout = (LinearLayout) findViewById(R.id.linearlayout);
        View v = getLayoutInflater().inflate(R.layout.design, myLayout, false);
        myLayout.addView(v);
        int id = View.generateViewId();
        v.setId(id);          

        EditText edittext = (EditText) v.findViewById(R.id.edittext);
        text = edittext.getText().toString();

        edtxtList.add(edittext);// try something like this.!

    }

然后在 EditText;

上使用 Foreach loop
 for (EditText edText : edtxtList) {

   if(!edText.getText().trim()=null){
         edtxtStrList.add(edText.getText().trim()); 
    }




}

我还没有尝试过,但也许这个 ruff 概念可以帮助你。!

也许这个方法对你有帮助!

ArrayList<EditText> myEditTextList = new ArrayList<EditText>();

for( int i = 0; i < myLayout.getChildCount(); i++ )
  if( myLayout.getChildAt( i ) instanceof EditText )
    myEditTextList.add( (EditText) myLayout.getChildAt( i ) );

在上面的代码中,mLayout 是您的布局。!

<LinearLayout android:id="@+id/myLinearLayout" >
   //Here is where your EditTexts would be declared
</LinearLayout>