如何在多个时以编程方式访问相对布局中的文本视图或进度条?

How do I access a textview or progressbar in relative layout programatically when multiple?

我正在 activity 中以编程方式创建多个相关布局。每个都是相同的,并且有一个文本视图和一个 ProgressBar 微调器。

我想在需要时以编程方式更改它们,但不确定如何访问合适的。我相信我需要为每个项目(或者可能是 relativelayout 本身)添加一个唯一的 SetId() 但不确定这样做的最佳方法。

我也不确定我是否使用 findViewById 访问创建后的视图以进行更改(SetText、SetVisibility 等)。

这是代码

RelativeLayout.LayoutParams tvpName = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    tvpName.addRule(RelativeLayout.ALIGN_PARENT_LEFT);

RelativeLayout.LayoutParams pbpSpinner = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    pbpSpinner.addRule(RelativeLayout.CENTER_IN_PARENT);
    pbpSpinner.addRule(RelativeLayout.ALIGN_PARENT_TOP);

 for (int i = 0; i < 5; i++) {
        RelativeLayout acctrl = new RelativeLayout(this);

        TextView tvName = new TextView(this);

        ProgressBar pbSpinner = new ProgressBar(this);
        pbSpinner.setVisibility(View.GONE);

        // Add items to Account Interal Layout
        acctrl.addView(tvName, tvpName);
        acctrl.addView(pbSpinner, pbpSpinner);
 }

有什么建议吗?

当您以编程方式创建 View 时,setId() 是一个很好的做法。此外,您还可以继续 setTag()。通过设置一个Tag,你可以知道每个RelativeLayout或任何其他视图。这样您就可以找到您正在寻找的视图。

如果您不打算访问或修改 RelativeLayout,则无需为其设置 ID,但为其设置 ID 会更容易,因此您只需发送 [= =14=] 作为方法的参数,它将对它持有的 Views 执行所有操作,因为你说所有 RelativeLayout 都是相同的。

如果您正在使用 setId(),那么您可以使用 findViewById() 来获取视图。
如果你使用 setTag(),你可以参考这个关于如何使用它来获取视图: