【问题标题】:Subclassing SimpleAdapter and overwriting getView causing trouble with bindView()子类化 SimpleAdapter 并覆盖 getView 导致 bindView() 出现问题
【发布时间】:2012-04-16 20:25:17
【问题描述】:

我只是想继承 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) 未定义为 changedColorAdapter 类型

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

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

干杯

【问题讨论】:

    标签: android subclass simpleadapter


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多