现在,我正在使用Android应用程序,该应用程序具有一个主要活动,该活动通过GLSurface显示一些数据。该数据可以通过多种方式进行更改。为此,我有几个片段,以及一些带有额外逻辑的变体列表。问题是我需要以某种方式将数据从一个地方传输到另一个地方。
例如:
我有带有元素列表的片段。我将RecyclerView与自定义适配器一起使用。我用数据库中的数据填充列表。例如SomeThingDBEntity
。当我从Room DB(使用Room实体)获取它时,它具有一些仅在RecyclerView中显示元素所需的额外字段。我需要将用户的选择从适配器发送到片段,然后从片段发送到活动,然后活动将其选择发送给封装了GLSurface的工作逻辑的某个类。例如SomeThingGLentity
。现在,我仅传递SomeThingGLentity
所要求的用于显示数据的字段(int
,String
等),但是将来这个列表会增加。我还可以直接发送SomeThingDBEntity
并仅在将更改应用于SomeThingGLentity
时最后获得必填字段。但是可以这样使用Room DB实体吗?
有什么更好的方法吗?我也可以创建仅包含必填字段的第三类。但是在哪里放置以及如何调用呢?也许有一些最佳做法的模式或准则...
答案 0 :(得分:1)
您似乎需要一个数据映射器。与此类似的内容-https://github.com/android10/Android-CleanArchitecture/blob/master/data/src/main/java/com/fernandocejas/android10/sample/data/entity/mapper/UserEntityDataMapper.java。 如果使用这种方法,则可以封装从DBEntity到BusinessEntity的转换逻辑,并且如果要更改其中之一的数据格式,则仅需要编辑映射器。