【问题标题】:Dynamically inflating textviews; setting text not working for some textviews when there are more than 2动态膨胀文本视图;当有超过 2 个文本视图时,设置文本不适用于某些文本视图
【发布时间】:2017-04-18 23:37:09
【问题描述】:

到目前为止,我还没有找到其他人解决这个问题。

我试图做的是将文本视图动态膨胀为线性布局并设置每个文本视图的文本。

我可以为 textviews 充气并为其中一些设置文本,但是当我为 2 个以上的 textviews 充气时,我只能为 2 个设置文本。

在提供的示例中,我正在尝试扩充 3 个文本视图并设置它们的文本。

我相信问题在于,当我尝试设置文本视图的文本时,它会覆盖已经设置了文本的文本视图的文本。

我在调试时发现了这个。

下面是我正在使用的代码(它不漂亮,我只是想我会这样显示它以显示所有数据类型等)

for (int i = 0; i < testsList.size(); i++) {
        LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View moduleView = inflater.inflate(R.layout.tests_layout, linearLayout, false);

        linearLayout.addView(moduleView, linearLayout.getChildCount() - 1);

        TextView txtTestName = (TextView) v.findViewById(R.id.txtTestName);

        String name = testsList.get(i).getTestName();

        txtTestName.setText(name);
    }

我还附上了我得到的输出图像。在图像中,显示“TextView”的文本视图是我无法为其设置文本的文本视图。它应该说“test5”,而目前说“test5”的Textview实际上应该说“test4”,据我所知,经过调试

This is an image of the result i am getting

如果有人能对此有所了解,我将非常感激!

【问题讨论】:

  • 您将膨胀的View 分配给moduleView,但您在v 中寻找txtTestName TextView。你确定这是正确的吗?也就是说,你确定不应该在moduleView 上调用findViewById() 吗?
  • 是的,解决了!我不敢相信我没有捡到...非常感谢!

标签: android dynamic layout-inflater android-inflate


【解决方案1】:

正如Mike指出的那样

问题在于这行代码:

v.findViewById(R.id.txtTestName);

需要改成:

moduleView.findViewById(R.id.txtTestName);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2017-07-25
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多