【问题标题】:CursorAdapter newView/BindView not getting called未调用 CursorAdapter newView/BindView
【发布时间】:2016-11-29 15:14:34
【问题描述】:

我正在使用内容观察器。在 onQuery 内部,我使用了 setNotificationUri 来注册 uri。 在 bulkInsert/insert 方法中,我添加了 notifyChange 方法调用。 在 bulkInsert 或 insert 之后,将调用 CursorLoader.onLoadFinished 方法。在 onLoaderFinished 方法内部:adapter.swapCursor 也被调用。 但没有调用 CursorAdapter newView/getView。 我在 CursorAdapter 中也覆盖了 getCount 方法。我能够获得光标计数。 请帮忙。 提前致谢。

MainActivity onCreate contains:
     mGridView = (GridView) findViewById(R.id.grid_view);
            mMovieCursorAdapter = new MoviesCursorAdapter(this, null, 0);
            mGridView.setAdapter(mMovieCursorAdapter);


getSupportLoaderManager().initLoader(MOVIE_LOADER, null, this);


 @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
        Uri uri = MovieContract.MovieEntry.CONTENT_URI;

        return new CursorLoader(this, uri, null, null, null, null);
    }

    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {

mMovieCursorAdapter.swapCursor(cursor);

    }

    @Override
    public void onLoaderReset(Loader<Cursor> loader) {
        mMovieCursorAdapter.swapCursor(null);
    }



In ContentProvider query() method:
     retCursor.setNotificationUri(getContext().getContentResolver(), uri);

**In bulkInsert() method:**
 getContext().getContentResolver().notifyChange(uri, null);

【问题讨论】:

  • 能否分享更多代码和细节

标签: android android-cursorloader contentobserver


【解决方案1】:

它可能晚了,但我遇到了同样的问题。我的代码按预期使用 API 19 运行,但在 API 24 中未调用 bindView。我尝试了有关此问题的所有答案,但没有任何帮助。我一次又一次地控制我的代码,没有发现任何错误。

解决方案:我创建了一个全新的项目。并将所有代码复制到与原样完全相同的新项目中。之后,在新项目中,一切都按预期工作。我认为它与 android studio 有某种关系。

我希望这会有所帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    相关资源
    最近更新 更多