繁体   English   中英

覆盖getview不起作用

[英]Override getview not working

我是超级菜鸟。 考虑到这一点,我试图将gridview的各个单元设置为不同的颜色。 我知道这个问题已经问过很多遍了,我已经阅读了大多数。 我已经看到了许多不同的方法,但是最简单的方法(我相信)是使用@Override getView方法:

 @Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = super.getView(position, convertView, parent);

    int color = 0x00FFFFFF; // Transparent
    if (SOME_CONDITION) {
        color = 0xFF0000FF; // Opaque Blue
    }

    view.setBackgroundColor(color);

    return view;
}

问题是在第三行super.getview中,我得到“无法解析方法”。 如果我删除了“ super”,它会解决,但是会说Override实际上并不会覆盖超类方法,这很有意义,但是有人可以解释一下为什么原始代码不起作用。

谢谢

原因是,Android的GridView类中没有getView(...)方法。 您不能覆盖不存在的内容。

更新:您将需要在Adapter类中重写getView(...)方法。

您可能是Java的新手,我认为@Override的以下解释将有助于您将来自行诊断问题:

指示方法声明旨在覆盖超类型中的方法声明。 如果使用此注释类型对方法进行注释,则除非至少满足以下条件之一,否则要求编译器生成错误消息:

 The method does override or implement a method declared in a supertype. The method has a signature that is override-equivalent to that of any public method declared in Object. 

您的问题是#1。

有关更多详细信息,请参考http://docs.oracle.com/javase/7/docs/api/java/lang/Override.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM