gpt4 book ai didi

android - 数据绑定(bind)适用于多个 Activity/fragment 使用的一种布局

转载 作者:搜寻专家 更新时间:2023-11-01 07:52:37 25 4
gpt4 key购买 nike

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

我有一些布局文件被多个 Activity/fragment 共享。例如,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 并不是一个好主意,因为这将需要大量冗余代码来决定使用哪个对象。

请分享您对此问题的想法。

最佳答案

最后,我找到了解决办法。数据绑定(bind)用于 MVVM 模式。这意味着一种布局对应一种 ViewModel。 ViewModel 包含 UI 布局的所有数据。所以我应该为每个布局文件准备一个 ViewModel。每个 fragment/Activity 都应该只处理 ViewModel。

关于android - 数据绑定(bind)适用于多个 Activity/fragment 使用的一种布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32761828/

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