【问题标题】:Databinding apply for one layout used by multiple activity/fragment数据绑定适用于多个活动/片段使用的一种布局
【发布时间】:2023-03-24 18:21:02
【问题描述】:

我正在用databinding 替换现有代码。但我面临一个问题。

我有一些布局文件由多个活动/片段共享。例如,SubFragmentA 及其扩展类SubFragmentB 使用了一个布局文件layout_sub。而且这两个fragment使用的数据模型也不一样。

代码如下所示。

public class SubFragmentA extends Fragment {

    private DataA dataA;

    @Override
    public View onCreateView(Bundle Bundle) {
        View v = LayoutInflator.from(getActivity()).inflate(R.layout.shared_layout);
        initView(v, dataA);
        return v;
    }

    private void initView(view v, DataA dataA) {
        // use dataA to init v
    }
}

public class SubFragmentB extends Fragment {

    private DataB dataB;

    @Override
    public View onCreateView(Bundle Bundle) {
        View v = LayoutInflator.from(getActivity()).inflate(R.layout.shared_layout);
        initView(v, dataB);
        return v;
    }

    private void initView(view v, DataB dataB) {
        // use dataB to init v
    }
}

到目前为止,我认为在layout_sub文件中同时使用DataA和DataB并不是一个好主意,因为它需要大量的冗余代码来决定使用哪个对象。

请分享您对这个问题的想法。

【问题讨论】:

    标签: android data-binding


    【解决方案1】:

    最后,我找到了解决方案。数据绑定用于 MVVM 模式。这意味着一个布局对应一个 ViewModel。 ViewModel 包含 UI 布局的所有数据。所以我应该为每个布局文件准备一个 ViewModel。每个片段/活动都应该只处理 ViewModel。

    【讨论】:

    • 如果布局相同,就像在某些情况下,如果任何 UI 部分相同,我们会包含布局。你有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多