Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果getSupportLoader()不工作,如何在CursorLoader中下载数据?_Java_Android_Android Studio - Fatal编程技术网

Java 如果getSupportLoader()不工作,如何在CursorLoader中下载数据?

Java 如果getSupportLoader()不工作,如何在CursorLoader中下载数据?,java,android,android-studio,Java,Android,Android Studio,我想创建用于下载非主线程数据的游标加载程序。对于显示数据,我使用ListView和CursorAdapter。但当我使用getSupportLoaderManager()设置适配器时(因为getLoaderManager()不工作)ListView保持为空。也许,这是因为这种方法已被弃用?但是我应该用什么来代替它呢? 我将感谢您的帮助。 另外,当我不使用游标加载程序下载数据时,它就起作用了 我在OnCreate()中的代码 游标装入器的方法 @NonNull @Override

我想创建用于下载非主线程数据的游标加载程序。对于显示数据,我使用
ListView
CursorAdapter
。但当我使用
getSupportLoaderManager()
设置适配器时(因为
getLoaderManager()
不工作)
ListView
保持为空。也许,这是因为这种方法已被弃用?但是我应该用什么来代替它呢?
我将感谢您的帮助。
另外,当我不使用
游标加载程序下载数据时,它就起作用了

我在
OnCreate()中的代码

游标装入器的方法

    @NonNull
    @Override
    public Loader<Cursor> onCreateLoader(int id, @Nullable Bundle args) {
        String projection[] = {
                MemberEntry._ID,
                MemberEntry.KEY_FIRST_NAME,
                MemberEntry.KEY_LAST_NAME,
                MemberEntry.KEY_GENDER,
                MemberEntry.KEY_SPORT
        };
        CursorLoader cursorLoader = new CursorLoader(this, MemberEntry.CONTENT_URI,
                projection, null, null, null);
        return cursorLoader;
    }
    @Override
    public void onLoadFinished(@NonNull Loader<Cursor> loader, Cursor data) {
        memberCursorAdapter.swapCursor(cursor);
    }
    @Override
    public void onLoaderReset(@NonNull Loader<Cursor> loader) {
        memberCursorAdapter.swapCursor(null);
    }
@NonNull
@凌驾
公共加载器onCreateLoader(int-id,@Nullable Bundle args){
字符串投影[]={
MemberEntry.\u ID,
MemberEntry.KEY\u名字,
MemberEntry.KEY\u姓氏,
MemberEntry.KEY_性别,
MemberEntry.KEY\u SPORT
};
CursorLoader CursorLoader=新的CursorLoader(这个,MemberEntry.CONTENT\u URI,
投影,空,空,空);
返回游标装入器;
}
@凌驾
public void onLoadFinished(@NonNull Loader,游标数据){
memberCursorAdapter.swapCursor(游标);
}
@凌驾
public void onLoaderReset(@NonNull加载程序){
memberCursorAdapter.swapCursor(空);
}

最近,最好在ViewModel中执行请求,并使用LiveData(使用viewLifecycleOwner观察)将下载的数据公开到片段中。也许这只是这个问题中的一个输入错误,但在
onLoadFinished()
中,您说“
memberCursorAdapter.swapCursor(cursor);
”其中应为
memberCursorAdapter.swapCursor(数据)@0X0nosugar谢谢,现在开始工作了!那真是个愚蠢的错误,非常感谢你找到它!欢迎你:但是,如果你有时间的话,真的考虑切换到LIFEDATA/VIEWMODE方法,这将是值得的麻烦。
    @NonNull
    @Override
    public Loader<Cursor> onCreateLoader(int id, @Nullable Bundle args) {
        String projection[] = {
                MemberEntry._ID,
                MemberEntry.KEY_FIRST_NAME,
                MemberEntry.KEY_LAST_NAME,
                MemberEntry.KEY_GENDER,
                MemberEntry.KEY_SPORT
        };
        CursorLoader cursorLoader = new CursorLoader(this, MemberEntry.CONTENT_URI,
                projection, null, null, null);
        return cursorLoader;
    }
    @Override
    public void onLoadFinished(@NonNull Loader<Cursor> loader, Cursor data) {
        memberCursorAdapter.swapCursor(cursor);
    }
    @Override
    public void onLoaderReset(@NonNull Loader<Cursor> loader) {
        memberCursorAdapter.swapCursor(null);
    }