Android:如何最好地将数据传递给视图?

我有一个显示我游戏所有级别的视图.这些级别由活动读取,然后传递到视图中.我可以从视图中看到它们,但它并不是它的责任,而且我是分离关注点的粉丝.

现在,我正在打电话给这个:

((GameView) findViewById(R.id.game)).setLevels(loadLevels());

但是,我不喜欢这样一个事实,即如果我忘记给塞特犬打电话,这个视图将会失灵.是否有更好的方法来传递关卡?

最佳答案 这也是一个偏好的问题.从理论上讲,通过你正在做的水平是完全正常的.或者,如果您需要的不仅仅是设置级别,而是提供更多功能(即还保存级别),我通常使用一个单独的类负责处理这些事情(即存储库,某些“管理器”类等…).然后将该类传递给构造函数中的View,最好是s.t.一个人被迫提供它.当然,为了分离事物,我使用接口而不是特定的实现s.t.它可能看起来如下:

public class MyView {

   public MyView(ILevelLoader levelLoader){
      this.levelLoader = levelLoader;
   }

   ...
}

通常,这可能不起作用,因为视图是由框架直接而不是由应用程序实例化的.在这种情况下,你被迫通过适当的设定者来做到这一点.它是某种MVC / MVP模式.

只是为了您的兴趣,您可能还想看看IoC containers和依赖注入. Google提供的Guice是一个很好的框架,我已经在Android上使用过了.

点赞