【发布时间】:2018-07-26 08:10:18
【问题描述】:
我目前正在开发的项目中遇到问题。
我一直在按功能结构对我的类进行分组,这基本上是我的结构:
- data
- local
- model
- LocalModel.java
- remote
- model
- RemoteModel.java
- ui
- features
两个模型包含完全相同的属性, 即:
RemoteModel.java
public class RemoteModel implements Parcelable {
private String name; //has getter and setter
...
}
LocalModel.java
public class LocalModel implements Parcelable {
private String name; //has getter and setter
...
}
在功能包下,我有一个 Activity 用于显示模型的详细信息。问题是,可以开始 Activity 持有 RemoteModel 或 LocalModel 对象。但是,作为该 Activity 属性的一部分,它只有一个 RemoteModel 属性,如下所示:
public class DetailsActivity extends AppCompartActivity {
...
private TextView mName;
private RemoteModel mRemoteModel;
...
public void onCreate(Bundle savedInstanceState) {
...
mRemoteModel = getIntent().getExtras().getParcelable(EXTRA_RESULT_TITLE);
...
mName.setText(mRemoteModel.getName());
}
}
这样它工作正常,直到我运行应用程序,然后点击查看详细信息按钮,然后出现以下美丽错误:
java.lang.ClassCastException: com.carlosparra.myApp.data.local.model.LocalModel cannot be cast to com.carlosparra.moviestvtracker.moviesandtvshowstracker.data.remote.model.RemoteModel
我知道错误的含义,所以我想知道如何将这两个类从不同数据源映射到一个共享对象中,然后我可以将其传递给详细信息 Activity。
【问题讨论】:
-
这些类的方法比
Parcelable多吗? -
@jhamon nope,只是
Parcelable实现及其 getter 和 setter 附带的那些 -
在
Parcelable中设置getter/setter 并将mRemoteModel设置为Parcelable而不是RemoteModel -
嗯,没有关注“在
Parcelable中有getter/setter”。你能给我一个简短的例子吗?在高级感谢 -
@Carlos 请尝试为这两个功能创建通用模型,无需创建单独的模型。
标签: java android mapping retrofit android-room