【问题标题】:How to implement custom view with variable fields?如何使用可变字段实现自定义视图?
【发布时间】:2010-07-07 18:09:34
【问题描述】:

我有一个ListView,它显示了一组笔记,每一个都有不同数量的数据(即有些有截止日期,有些没有)。

目前,列表中的每个视图都是一个RelativeLayout,每个字段包含一个TextView,外加两个Button 和一个CheckBox。然后我通过在每个字段上设置 visible false 来隐藏未使用的字段。

这很有效,但我将在注释中添加更多数据字段,并且为每一行添加许多不需要的视图肯定会杀死我的应用程序。我需要一个更动态的解决方案。

我决定最好的方法是创建自定义视图。如何实现/设计我的视图,以便它可以显示可变数量的文本字段,而无需每次都创建/销毁文本视图(这将非常昂贵并且比我目前的情况更糟),或者维护大量隐藏的文本视图?

【问题讨论】:

    标签: android listview android-layout custom-view


    【解决方案1】:

    您可以创建一个extends LinearLayout 的类 并使用addView 动态放置您的视图。

    【讨论】:

    • 这将需要在每次我需要填充我的列表并销毁旧的列表时创建一个新的文本视图。我还需要一种方法来跟踪它们。这是我在 OP 中试图避免的问题。
    • 扩展 LinearLayout 将允许您根据需要使用一些回收。如果您需要先添加一个 TextView,请检查是否有可用的,如果没有,请创建一个新的。
    【解决方案2】:

    听起来您可能想查看带有stub 的视图。存根将节省空间,直到它们被充气,因此每一行都会更轻,直到它用于更重的视图。如果这些较大视图的数量相对较少,您可能会节省一些开销。

    【讨论】:

    • 那会很好,但我不确定它与 ListView 的回收器的效果如何。一旦替换了存根,我就不得不再次替换一大堆视图,并且我得到了一次性优化。
    • 是的,一旦添加了视图,我看不到在回收时添加/删除或隐藏/显示它们的方法。我能看到的最好的情况是对视图进行一些优化,这些视图最终只会被回收用于较小的视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2011-02-17
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    相关资源
    最近更新 更多