如何在多个时以编程方式访问相对布局中的textview或progressbar?

时间:2015-10-26 02:37:42

标签: android android-relativelayout programmatically-created

我正在以编程方式在活动中创建多个相对布局。每个都是相同的,有一个textview和一个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);
 }

有任何建议/建议吗?

1 个答案:

答案 0 :(得分:0)

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

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

如果您使用RelativeLayout,则可以使用setId()来获取视图。
如果您使用的是findViewById(),则可以参考此处了解如何使用它来获取视图:https://stackoverflow.com/a/5291891/4747587