我有点困惑,我根据google / android网站上的教程设置了recyclerview,我收到以下错误
Inner classes cannot have static declaration
当然我有一个嵌套的静态类,但这就是android / google定义它的方式。
public class ItemsViewAdapter extends RecyclerView.Adapter<ItemsViewAdapter.ViewHolder> {
...
...
public static class ViewHolder extends RecyclerView.ViewHolder {
...
}
为什么我要发现这个错误,我听说最好使用嵌套类作为静态,这样你就不会浪费一个引用,但当前版本的android studio正在抱怨
有什么想法吗?
由于
答案 0 :(得分:12)
直接提出问题:
内部类不能有静态声明
这完全正确。这不是错误,错误消息甚至没有误导性。
我听说最好将嵌套类用作静态,这样你就不会浪费引用
你是完全正确的。
为您解决方案:
在项目中为ItemsViewAdapter
创建一个新类(文件),但不会出现这样的错误。
一般性讨论
Java和Android都支持您可以声明static
内部类/成员/函数,但该类应该是父类。你不能在内部类中做到这一点。
即class Main
可以有static class Adapter
但是如果Adapter
类是Main
的内部类不是静态的,那么它就不具有自己的静态内部阶级/成员。
你能拥有什么?
class Main
static class Adapter
static class Holder
或者
class Adapter
static class Holder
如果要将类的任何成员声明为static
,则直接父类必须是该文件中的顶级主类。
<强>为什么吗
进一步阅读主题
1 http://www.geeksforgeeks.org/inner-class-java/
2 http://www.javaworld.com/article/2077372/learn-java/static-class-declarations.html
答案 1 :(得分:-1)
您也可以简单地将ItemViewAdapter实现为静态类
public static class ItemsViewAdapter extends RecyclerView.Adapter<ItemsViewAdapter.ViewHolder> {
...
...
public static class ViewHolder extends RecyclerView.ViewHolder {
...
}
那应该处理错误