Java RecyclerView:内部类不能有静态声明
我有点困惑。根据谷歌/安卓网站上的教程,我设置了一个Java RecyclerView:内部类不能有静态声明,java,android,android-recyclerview,Java,Android,Android Recyclerview,我有点困惑。根据谷歌/安卓网站上的教程,我设置了一个RecyclerView,我发现以下错误: Inner classes cannot have static declaration 当然,我有一个嵌套的静态类,但android/google就是这样定义的 public class ItemsViewAdapter extends RecyclerView.Adapter<ItemsViewAdapter.ViewHolder> { // ...
RecyclerView
,我发现以下错误:
Inner classes cannot have static declaration
当然,我有一个嵌套的静态类,但android/google就是这样定义的
public class ItemsViewAdapter extends RecyclerView.Adapter<ItemsViewAdapter.ViewHolder> {
// ...
// ...
public static class ViewHolder extends RecyclerView.ViewHolder {
// ...
}
公共类ItemsViewAdapter扩展了RecyclerView.Adapter{
// ...
// ...
公共静态类ViewHolder扩展了RecyclerView.ViewHolder{
// ...
}
为什么会出现这个错误?我听说最好对嵌套类使用static
,这样就不会浪费一个引用,但是当前版本的android studio正在抱怨
有什么想法吗?直接回答你的问题:
ItemsViewAdapter
创建一个新类(文件),这样就不会出现这样的错误
一般性讨论 Java和Android都支持您可以声明
静态
内部类/成员/函数,但是该类应该是父类。您不能在内部类中声明
也就是说,class Main
可以有静态类适配器
,但如果适配器
类是Main
的内部类,则它不能有自己的静态内部类/成员
你能吃什么?
class Main
static class Adapter
static class Holder
或
如果要将类的任何成员声明为静态
,则直接父类必须是该文件中的顶级主类
为什么?
class Main
static class Adapter
static class Holder
引用另一个答案,
关于该主题的进一步阅读
一,
二,
3您也可以简单地将ItemViewAdapter实现为一个静态类
public static class ItemsViewAdapter extends RecyclerView.Adapter<ItemsViewAdapter.ViewHolder> {
...
...
public static class ViewHolder extends RecyclerView.ViewHolder {
...
}
公共静态类ItemsViewAdapter扩展了RecyclerView.Adapter{
...
...
公共静态类ViewHolder扩展了RecyclerView.ViewHolder{
...
}
这应该会解决错误这很可能是一个bug。这个问题与您的问题类似。很好!非常好的解释!谢谢。“静态内部类/成员/函数”在术语上是一个多重矛盾。