我创建了一个自定义CursorAdapter来与我的列表视图一起使用,并实现了LoaderManager.LoaderCallbacks函数来加载数据。

我的问题:在我的活动的onCreate()方法中,我想创建CursorAdapter的实例并将其设置为listview的适配器。 但是,由于LoaderManger尚未运行我的查询并返回了一个游标,所以我没有游标可传递到我的适配器的构造函数中。 如果传入null,则会得到null指针异常。

使用simpleCursorAdapter,如果尚未初始化,则可以传递空游标。 但是我扩展了CursorAdapter,它的行为并不相同。

我的问题:有没有办法将空游标传递给我的适配器? 当我的构造函数调用适配器的super(context,cursor)方法时,出现异常。 我在构造函数中什么也没做。

如果我延迟创建适配器(并因此将其设置为listview的适配器),直到从LoaderManger调用onLoadFinished(),一切都会很好,但是我认为这不是最好的方法。

我也看到了这个链接:

http://rajeevranganathan.blogspot.com/2012/07/creating-custom-cursor-adapter-and.html

在这里,他每次都会重新创建整个CursorAdapter,实质上是换出listview的适配器,而不仅仅是换出其光标-这似乎效率很低:您不必重新创建适配器,只需换出光标即可。

任何帮助将不胜感激。 我是否只需要扩展SimpleCursorAdapter并简单地忽略我不需要的所有其他参数?

谢谢!

===============>>#1 票数:0

让您的ListView不带适配器并不是一件坏事。 如果您真的想给您的SimpleCursorAdapter一个空光标,我想您可以创建一个没有行的MatrixCursor。

在Android开发人员页面上查看加载程序指南》

===============>>#2 票数:0 已采纳

如果将CursorAdaptor构造函数与autoRequery参数一起使用,并传递false,则可以传递null游标是可以的:

class MyCursorAdapter extends CursorAdapter {

    MyCursorAdapter(Context context) {
        super(context, null, false);    // cursor=null, autoRequery=false
        .
        .
        .
    }
}

  ask by SjB translate from so

未解决问题?本站智能推荐: