CursorAdapter newView / BindView未被调用

时间:2016-11-29 15:14:35

标签: android android-cursorloader contentobserver

我正在使用内容观察者。在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);

1 个答案:

答案 0 :(得分:0)

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

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

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