首页 > 解决方案 > 我将视图膨胀了 5 次,膨胀的视图有一个 EditText,现在我在屏幕上有 5 个 EditText,如何从这些 EditTexts 中获取文本

问题描述


public class MainActivity extends AppCompatActivity {



    EditText EditText1,EditText2,EditText3,EditText4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        EditText1 = findViewById(R.id.edittext);
        EditText2 = findViewById(R.id.edittext);
        EditText3 = findViewById(R.id.edittext);
        EditText4 = findViewById(R.id.edittext);


        addChildLayout();
        addChildLayout();
        addChildLayout();
        addChildLayout();
    }

    public void addChildLayout(){

        LayoutInflater layoutInfralte=(LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       
        LinearLayout linearLayout=(LinearLayout)findViewById(R.id.infolayout);
      
        View view=layoutInfralte.inflate(R.layout.activity_main_layout, null);
        
        linearLayout.addView(view);

    }
}

如何从所有四个视图中选择 EditText 并显示它们,有什么想法吗?我能在这里做什么?

我想从 4 个 EditTexts 中的每一个中获取数据

标签: javaandroidandroid-layoutandroid-edittextlayout-inflater

解决方案


public class MainActivity extends AppCompatActivity {



    EditText EditText1,EditText2,EditText3,EditText4;
List<EditText> list=new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        EditText1 = findViewById(R.id.edittext);
        EditText2 = findViewById(R.id.edittext);
        EditText3 = findViewById(R.id.edittext);
        EditText4 = findViewById(R.id.edittext);


        addChildLayout();
        addChildLayout();
        addChildLayout();
        addChildLayout();
    }

    public void addChildLayout(){

        LayoutInflater layoutInfralte=(LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       
        LinearLayout linearLayout=(LinearLayout)findViewById(R.id.infolayout);
      
        View view=layoutInfralte.inflate(R.layout.activity_main_layout, null);
EditText inflatededitText=(EditText)view.findViewById(R.id.youredittextid);
list.add(inflatededitText);
        
        linearLayout.addView(view);

    }
}

现在您可以获得如下所示的任何编辑文本

list.get(0).getText.toString

这里0是edittext的位置

如果你需要所有的edittext值然后使用for循环这样

for(int i=0;i<list.length;i++){
 Log.d("value","list.get(i).getText.toString");
}

推荐阅读