在androidx中将加载程序与CursorAdapter一起使用意味着列表项对点击没有响应

时间:2019-07-29 00:59:45

标签: androidx android-loadermanager

如果我不使用装载机:

private void init(){
    ListView listViewApps = findViewById(R.id.list_app);
    //Cursor cursor = getContentResolver().query(AppContract.CONTENT_URI, null, AppContract.AppEntry.COLUMN_IS_COMPLETED + "=0", null, null);
    //mAppCursorAdapter = new AppCursorAdapter(this, cursor);
    mAppCursorAdapter = new AppCursorAdapter(this);//
    listViewApps.setAdapter(mAppCursorAdapter);

    **LoaderManager.getInstance(this).initLoader(0, null, this);**//
}

@NonNull
@Override
public Loader<Cursor> onCreateLoader(int id, @Nullable Bundle args) {
    return new CursorLoader(this, AppContract.CONTENT_URI, null, null, null, null);
}

@Override
public void onLoadFinished(@NonNull Loader<Cursor> loader, Cursor data) {
    mAppCursorAdapter.swapCursor(data);
}

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

那么就没有问题,但是当数据库发生更改时,UI不会更新。 但是,如果使用装载机,则无法单击列表项。有时需要多次点击才能使某事发生。奇怪的是,如果我从项目视图侦听器之外的任何地方调用插入,更新或删除操作,它会立即更新(因为即使我注释掉bindView中的所有代码,适配器/ listView也无法响应点击)。

为什么会这样?如何在通过数据库更改使用户界面保持更新的同时使其对单击做出响应?

0 个答案:

没有答案