我正在用AA>替换现有代码。但我面临一个问题。
我有一些布局文件由多个活动/片段共享。例如,有一个布局文件layout_subSubFragmentA及其扩展类SubFragmentB使用。这两个片段中使用的数据模型是不一样的。
代码如下所示。

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不是一个好主意,因为它需要大量的冗余代码来决定要使用哪个对象。
请分享你对这个问题的看法。

最佳答案

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

10-06 09:43