对SimpleAdapter进行子类化并覆盖getView会导致bindView()出现问题

时间:2012-04-16 20:25:18

标签: android subclass simpleadapter

我只是想将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没有给我任何关于它正在做什么的提示,我似乎也无法从我的子类中调用它。

  

对于类型ChangingColorAdapter

,方法bindView(int,View)未定义

如果我使用上面的代码,那就是我得到的,虽然我是从原始来源复制的。对我来说似乎有点奇怪。我正在API级别8(2.2)进行编程并附加了源代码。如果我看一下SimpleAdapters原始源代码,编辑器无法告诉我bindView调用的位置,但它不会给出任何错误。

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

干杯

1 个答案:

答案 0 :(得分:0)

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