RecyclerView Adapter中静态和非静态视图的区别是什么?

Les*_*ter 63 static android android-viewholder android-recyclerview

这种方法的优点是什么(在我的类MyAdapter中使用静态嵌套类扩展了RecyclerView.Adapter):

static class MyVH extends RecyclerView.ViewHolder {...}
Run Code Online (Sandbox Code Playgroud)

而这种方法(使用成员内部类):

  class MyVH extends RecyclerView.ViewHolder {...}
Run Code Online (Sandbox Code Playgroud)

或者它不会影响性能,可以使用这两种方法吗?

dro*_*dpl 95

它更像是一个java问题而不是Android问题.如果要将它们的实例从类中取出,建议对内部类使用static以避免内存泄漏.你可以看看这个很棒的帖子,它解释了内部类的内存泄漏.

基本上是什么nyx说:

  • 如果将viewholder声明为static,则可以在其他适配器中重用它.无论如何,我不建议这样做,创建一个新的分离类并从多个地方使用它,它确实更有意义.一个目的是一个目的.
  • 对于视图持有者,此类将仅在适配器内使用,它们的实例不应仅根据定义转到片段或活动或其他地方.这意味着在视图持有者的情况下使其静态或非静态是相同的.

回答你的表现问题,你可以看看这个答案.静态的内存比另一个占用更少的内存,但是我们再次谈论将回收实例的回收站,因此内存影响不是问题.

  • 真棒的答案! (2认同)

nyx*_*nyx 16

通过使用静态,它意味着您可以MyVh在其他适配器中重复使用.如果你肯定知道你只需要MyVh那个适配器,那么你应该把它变成非静态的.

如果你需要在其他适配器中使用它,甚至可以更好地将它完全创建为一个单独的类,而不是嵌套类.

静态与非静态的性能应该没有影响!

  • 最需要的用例的简单有效的解释 (2认同)