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);
}