gpt4 book ai didi

android - View 绑定(bind)迁移导致的代码重复

转载 作者:行者123 更新时间:2023-12-04 14:55:20 26 4
gpt4 key购买 nike

我正在尝试从 kotlin 合成器迁移到推荐的 View 绑定(bind)模式。为了减少锅炉代码,我选择使用来自 here 的委托(delegate)方法.

现在我面临一个问题,我不知道如何以优雅的方式解决它。我有两个相似的布局,它们仅与几个 View 不同。例如,假设 layout_alayout_b .

    <!-- This is just an example (layout_a) ! -->
<LinearLayout>
<TextView
android:id="@+id/commonView1"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

<TextView
android:id="@+id/commonView2"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
    <!-- This is just an example (layout_b) ! -->
<LinearLayout>

<TextView
android:id="@+id/commonView1"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<TextView
android:id="@+id/commonView2"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<TextView
android:id="@+id/specialView1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>

因为我不想为这些 TextViews 编写文本 setter 逻辑代码在我的应用程序中,我创建了一个额外的单例类,它通过 view 精确映射这些常见 View 。目的。感谢 kotlin synthetics,当我使用相同的 ID(如 commonView1commonView2 )时,我能够引用这些 View 。因为现在我必须使用绑定(bind)对象(在本例中为 LayoutABinding 和 LayoutBBinding)我不能这样做。

当然,我可以更改 specialView1 的可见性以编程方式将这两个布局合并为一个,但这种重复的原因是性能和内存效率。当然,以上只是一个例子,在我原来的应用程序中,我有更多的 View 会被不必要地渲染并浪费内存空间。

一个可能的解决方法是在这些特殊情况下使用 findViewById,这在我看来有点麻烦。

有没有办法抽象这些绑定(bind)?

最佳答案

您可以创建一个自定义 View 来包装通用 View ,这样您将拥有一个绑定(bind)类。

另一种方法是使用 <include>包括两种布局的通用 View 。

关于android - View 绑定(bind)迁移导致的代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68151481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com