【问题标题】:Dynamic layout modification Android动态布局修改Android
【发布时间】:2013-05-30 08:38:21
【问题描述】:

我正在 Android 中开发 Treeview 布局,但我遇到了刷新问题。这是我看到的

现在我收到一条消息,向此树视图添加资源。我想要的是在我观看树视图时添加设备,而不是滚动到开头,重新创建或类似的东西。只有最小滚动才能为新组件腾出空间。

我的树视图是这样构建的:

Every element is a LinearLayout with some properties, visible (like the name) and invisible (like the ip, the father and so on)
I find the father of all the devices (rootFather)
Recursively I examine every device and add it to the proper father (which is a LinearLayout)
I embed the rootFather in a ScrollView
I embed the ScrollView in a LinearLayout
I display the layout

现在,当一个新设备“到达”时,我对其进行解析并构建它,然后将其添加到正确的父亲中,整个过程发生在显示 Treeview 的 Activity 中。

问题是什么都没有发生,没有刷新,什么都没有。如果我按下后退按钮并使用 Treeview 重新打开 Activity,则对象会正确显示。

解决这个问题的正确方法是什么?我应该改变方法吗?添加孩子后我应该调用一些魔术方法吗?

谢谢

【问题讨论】:

    标签: android view android-activity refresh livereload


    【解决方案1】:

    我已经使用 ExpandableListViews 实现了 TreeViews look-a-likes。它们非常易于使用,任何所需的失效都可以通过调用#notifyDataSetInvalidated(); 很容易触发

    Here is a link 让您开始使用 ExpandableListViews。 使用 ListViews 和 ExpandableListViews 的优点是它们会处理您在上面尝试实现的算法。

    希望它有所帮助,现在重构还为时不晚! :)

    【讨论】:

    • 问题是 ExpandableListView 只支持 2 个深度级别,我需要一些不受限制的东西。所以从这里开始构建我自己的树视图的想法,当然,所有相关的问题......顺便说一句,如果你的答案仍然有用,因为至少提供了一个替代方案
    • 您可以级联 ExpandableListView 视图实现,以便每个不是叶子的子节点都可以是 ExpandableListView。
    • MM 是的,这很有趣,尽管我担心重构的时间不会太短,而且它被破坏的可能性很大!
    • 您为什么不尝试分配 2-3 小时然后尝试这种方法,而不是继续使用当前方法?我相信从长远来看你会获得更多;)
    • 我终于做到了!!我将新资源添加到适当的父亲,称为father.childDrawableStateChanged(newResource);然后 newResource.setVisibility(View.VISIBLE);并且完美运行。不过感谢您的建议,下次我一定会使用 ExpandableListView !
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多