Ege*_*tçu 11 java android android-viewholder android-recyclerview
我有两个RecyclerView.Adapter
s使用RecyclerView.ViewHolder
与内部类完全相同的s.
我想摆脱代码重复,并使这些ViewHolder
免费,独立的类,所以现在全新的类可以被任何RecyclerView.Adapter
s使用.
但是,我遇到了许多麻烦,例如访问适配器对象的困难.getAdapterPosition()
总是回来-1
.
所以我改变主意并制作了一个超级RecyclerView.Adapter
类,它由这些适配器扩展,并将ViewHolder放在超类中,以便这些适配器可以从子类中使用它.
但我想知道是否ViewHolder
必须是一个内在阶级.这让我很生气.请不要建议我结合适配器类,它们是完全不同的,因为ViewHolder
它只是一个viewType
可以出现在任何特殊的特殊RecyclerView
我在等待你让我感觉更好的更好的方法.
问候.
ViewHolder可以在课外.内部类只是RecyclerView的所有教程中的一个命题,如果您的ViewHolder应该可以访问所有适配器参数,甚至是私有参数,这是一种更好的方法,但是可以通过Adapter和ViewHolder中的访问方法重新创建任何访问或对象关系.
我创建了一个独立的项目,使用ViewHolder作为外部类,看一看.链接到存储库 - https://github.com/maciejsikora/outsideviewholder.
我认为你的问题的原因还在于,在第一个代码版本中,ViewHolder是一个内部类并且可以访问属性,在更改为外部类之后,代码应该被重构,并且在结果中所有关系应深入检查ViewHolder和Adapter.
问题的答案是 - ViewHolder不必是内部类,并且您的问题是由使用ViewHolder作为外部类的无效代码实现引起的.
实际上,没有。
首先你需要明白为什么我们需要内部类?
我们确实需要内部类,我们希望只有特定的类才有这个功能。就像我们有很多内部类,很多Listeners
和Button
onClick 等等。
所以我们使用内部类来使事情变得私有、简短和简单。
你可以把这个东西(ViewHolder
)变成一个单独的类。但这不会是有效的、明确的(如果你创建另一个类,它会为你的项目添加一个额外的类),也是有效的方法。
归档时间: |
|
查看次数: |
2986 次 |
最近记录: |