0

我只是想继承 SimpleAdapter 并根据位置更改颜色(以及其他使元素更漂亮和相互区分的选项),但我在覆盖 getView 方法时遇到了麻烦。我刚刚从 SimpleAdapter 类的原始 getView 方法中调用的方法中复制了代码,该方法是 createViewFromResource ,我的代码现在看起来像这样:

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View v;

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater)thecontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = inflater.inflate(layoutResource, parent, false);

    } else {

        v = convertView;

    }

    bindView(position, v);

    return v;
}

这里没有什么破坏性的,正如我所说的,它是从原始适配器源中复制粘贴的 95%,我只是从构造函数中获取了一些变量,而不是在超类中声明的私有变量,因为我无法在子类中访问这些变量。我的问题是在返回视图之前调用的 bindView 方法。Eclipse 没有给我任何关于它在做什么的提示,我似乎也无法从我的子类中调用它。

方法 bindView(int, View) 未定义为类型 ChangeColorAdapter

如果我确实使用上面的代码,这就是我得到的,尽管我是从原始来源复制的。对我来说似乎有点奇怪。我正在 API 级别 8 (2.2) 编程并附有源代码。如果我查看 SimpleAdapters 的原始源代码,编辑器无法告诉我 bindView 调用的去向,但它不会在那里给出任何错误。

我在这里有什么问题吗?或者是什么导致了这个问题?我似乎找不到关于 bindView 方法的任何文档或描述,只是示例实现,主要来自游标适配器。任何提示都会很棒。

干杯

4

1 回答 1

0

我完全搞砸了这个。睡了几个小时后,我刚刚在 SimpleAdapter 类中找到了 bindView() 方法。它没有任何 java-doc,我可以发誓我昨天无法 ctrl-click 该功能,但今天它工作正常。由于该方法是私有的,您需要像我一样重新实现它,它现在运行得非常顺利。

于 2012-04-17T13:50:33.820 回答