如何将EditText值放在另一个View中

问题描述 投票:1回答:6

我必须根据数据库中的数据行创建n个edittexts。我在LinearLayout中添加了它们,如:

for(Some Condition)
{
    EditText et = new EditText (this);
    et.setValue(SomeVal);
   li.addView(et);
}

然后,我将LinearLayout添加到ScrollView,我在AlertDialog中将其用作视图。

我是否需要为每个EditText分配id,以及我如何以后访问每个EditText的值。

android android-edittext
6个回答
1
投票

我喜欢从另一方面解决这个问题。

使用LinearLayout并逐个搜索子项。

例如:

      String a;
      for (int i = 0; i< linearLayout.getChildCount(); i++){
          a = ((EditText) linearLayout.getChildAt(i)).getText().toString();
          Log.i("go", "TextView text is:" + a);
      }

在您的情况下,将linearLayout更改为li。


0
投票

不要像这样创建视图。使用自定义适配器和ListView或RecyclerView:https://www.journaldev.com/10416/android-listview-with-custom-adapter-example-tutorial

您将能够通过其在后备阵列中的位置来引用每个项目。


0
投票

要稍后访问这些Edittexts,请将它们添加到某个集合中,然后通过位置访问:

Arraylist<EditText> edittexts = new Arraylist()

for(Some Condition) {
     EditText et = new EditText (this);
     et.setValue(SomeVal);
     li.addView(et);
     edittexts.add(et);
}

0
投票

如果你想坚持这种方式,你可以创建一个HashMap

HashMap<Integer/*EditText Id*/,EditText> myEditTexts = new HashMap<>();

然后在你的代码中

for(Some Condition)
{
    EditText et = new EditText(this);
    et.setValue(SomeVal);
    /*Add This*/
    myEditTexts.put(intId,et);
    li.addView(et);
}

然后你可以打电话给它

myEditTexts.get(Id);

或者你可以使用RecyclerViewEditTexts并按位置到达它(如果你不知道如何,如果你想要这个选项,你可以问我方向)


0
投票

如果你有LinearLayout的引用变量,你在其中添加值,那么你可以使用下面的代码获取它的所有子视图并访问它们的数据。添加它们时,您不需要将ID分配给EditText。

for (int i = 0; i < ll_main.getChildCount(); i++) {
    EditText child = (EditText)ll_main.getChildAt(i);
    child.getText(); 
}

确保您的布局中只包含EditTexts,或者在转换为EditText之前需要检查对象。


0
投票

试试这个

添加动态编辑文本: -

EditText et;
List<EditText> edtList = new ArrayList<EditText>();

LinearLayout ll = (LinearLayout) findViewById(R.id.ll);
        // add edittext
        for (int j = 1; j <= n; j++) {
            et = new EditText(this);
            edtList.add(et);
            LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            et.setLayoutParams(p);
            et.setText("Text");
            et.setId(j);
            ll.addView(et);
        }

检索编辑文本: -

int id[]=new int[edtList.size()];
for(int i=0; i < edtList.size(); i++){
    id[i] = edtList.get(i).getId();
}

我希望这对你有所帮助!

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.