以编程方式添加视图,然后引用这些视图

Adding views programmatically, then referencing those views.

本文关键字:视图 引用 然后 方式 添加 编程      更新时间:2023-09-26

我是java世界的新手,所以提前感谢您的帮助。

我想做的是:我有两个EditText字段和一个Button。当我点击按钮时,我想获取这两个字段的内容,将它们组合起来并显示在按钮下面。字段将被清除。然后,如果再次填充并按下按钮,则组合字段并将其显示在先前生成的文本视图下方。

示例:

单击按钮之前:

eT1___ eT2____ |按钮|

单击按钮后

eT1___ eT2____ |按钮|
eT1-eT2

点击第二个按钮后

eT1___ eT2____ |按钮|
eT1-eT2
eT1-eT2

依此类推,不管点击多少次按钮。我需要帮助的是正在添加的新视图。目前我使用的是相对布局。我想弄清楚的是如何引用我在代码中创建的新textView,这样当添加新视图时,它们就可以引用以前添加的视图。

这就是我目前一直在尝试的:

private TextView createNewTextView(String desc, Double cost){
        RelativeLayout.LayoutParams lparams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);;
        TextView newTextView = new TextView(this);
        if (i==1) {
            lparams.addRule(RelativeLayout.BELOW, mButton.getId());
        }
        else {
            lparams.addRule(RelativeLayout.BELOW, mLayout.getId());
        }
        lparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        newTextView.setLayoutParams(lparams);
        newTextView.setText(desc + " - $" + cost);
        newTextView.setTag(i);
        i++;
        return newTextView;
    }

我试图使用"I"作为一个递增变量,我可以使用它来引用以前的视图,除了第一次新视图基于按钮引用时。

如有任何帮助,我们将不胜感激。提前感谢,感谢我已经潜伏的一切!

创建TextView:的ArrayList的成员变量

ArrayList<TextView> textviews = new ArrayList<>();

然后在您的createNewTextView()方法中,存储您要添加的TextView的引用:

textviews.add(newTextView);

因此,你在第一个添加的TextView将位于索引0,依此类推。然后你可以很容易地引用你的TextViews

假设你想得到第二个TextView

TextView secondTv = textviews.get(1);

只需将您的文本视图添加到全局列表中,并根据其中的标记找到它们。