覆盖getview不起作用

时间:2014-07-07 03:18:50

标签: java android

我是超级菜鸟。考虑到这一点,我正在尝试将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;
}

问题是在第3行,super.getview我得到“无法解析方法”。如果我删除“超级”它确实解决但后来说Override实际上没有覆盖超类方法,这是有道理的,但有人可以解释为什么原始代码不起作用。

由于

2 个答案:

答案 0 :(得分:1)

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

<强>更新 您需要覆盖Adapter类中的getView(...)方法。

答案 1 :(得分:0)

您可能是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