覆盖CursorAdapter中的getView()?

时间:2015-02-10 14:57:04

标签: android android-listview garbage-collection android-cursoradapter

我只是想知道我们可以覆盖扩展getView()类的类中的CursorAdapter方法吗?CursorAdapter类中未实现的方法是newView()到膨胀ViewbindView()以将数据源中的数据绑定到View。但问题是我们无法将View保存在newView()内方法,因此与garbage collection相比,它更频繁地运行getView()我们先前获得View创建的先前实例。因此我们可以覆盖getView()而不是{{1}在扩展newView()的类中?如果可以的话,我们是否需要每次都自己调用它,或者编译器是否会为我们这样做? 代码已添加 我正在尝试创建一个音乐播放器,我已经创建了一个单独的类来处理适配器。我已经指定了每个类的类型,并且已经创建了这个自定义适配器类的对象来处理视图通胀和数据绑定。

CursorAdapter

}

2 个答案:

答案 0 :(得分:0)

不确定。你可以覆盖它。方法如下:

public class CustomAdapter extends CursorAdapter {

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        return null;
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {

    }

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

}

那就是说,你没有(不需要)。 newViewbindViewgetView调用。因此,覆盖getView基本上不会改变任何内容。

您只需自己创建视图并绑定数据,而不必担心使用convertViews

所有缓存都在后台完成,即如果您没有覆盖getView方法。

您可以非常轻松地找到大多数Android类的源代码。这是CursorAdapter's getView method implementation.

答案 1 :(得分:0)

如果您使用多种视图类型,则应覆盖BaseAdapter中的以下内容以获取正确的行为:

  • public int getViewTypeCount()
  • public int getItemViewType(int position)