Articles of android cursorloader

在Android中使用Asynctask的加载器有什么优势?

加载器优于异步任务有什么优势吗? 此外,如何使装载程序与Android froyo手机兼容。 编辑: 这里的主要问题是我没有使用本机DB(SqlLite)。 在开发服务器上使用DB。 显然,我不能再使用CursorLoader了。 AsyncTaskLoader完全没有示例。 如果有的话,请做链接。 将所需数据加载到本地数据库然后使用CursorLoader查询它是否更好?

带有由LoaderManager管理的自定义适配器的AlphabetIndexer

我正在尝试使用自定义适配器实现AlphabetIndexer 带自定义适配器的AlphabetIndexer 我的类ContactsCursorAdapter扩展了SimpleCursorAdapter并实现了SectionIndexer ,我使用LoaderManager来管理我的适配器的光标,所以我已经覆盖了swapCursor()方法,就像上面示例的第二个答案所示。 public class ContactsCursorAdapter extends SimpleCursorAdapter implements SectionIndexer{ private LayoutInflater mInflater; private Context mContext; private AlphabetIndexer mAlphaIndexer; public ContactsCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) { super(context, layout, c, from, to); mInflater = LayoutInflater.from(context); mContext = context; } public View getView(final int position, View convertView, ViewGroup parent) { … […]

CursorLoader的onLoadFinished回调中的RxJava2

要从数据库中获取数据,我在应用程序中使用CursorLoader 。 一旦onLoadFinished()回调方法调用app的逻辑,就将Cursor对象转换为业务模型要求中的对象List 。 如果有大量数据,那么转换(繁重操作)需要一些时间。 这会降低UI线程的速度。 我尝试使用传递Cursor对象的RxJava2在非UI Thread开始转换,但是得到了Exception : Caused by: android.database.StaleDataException: Attempting to access a closed CursorWindow.Most probable cause: cursor is deactivated prior to calling this method. 这是Fragment代码的一部分: @Override public Loader onCreateLoader(int id, Bundle args) { QueryBuilder builder; switch (id) { case Constants.FIELDS_QUERY_TOKEN: builder = QueryBuilderFacade.getFieldsQB(activity); return new QueryCursorLoader(activity, builder); default: return null; } […]

使用SimpleCursorAdapter在onLoaderFinished中使用NullPointerException

我已经从ResourceCursorAdapter切换到我使用newView和bindView到SimpleCursorAdapter ,我只使用getView方法。 现在我在onLoaderFinished出错了。 虽然它在adapter.swapCursor(cursor)上给了我NullPointerException ,但我的适配器和游标对象都不是null 。 我将在下面发布我的所有代码。 非常感谢任何帮助(没有多余的头发留下来)。 import android.annotation.SuppressLint; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.ContactsContract; import android.support.v4.app.FragmentActivity; import android.support.v4.app.LoaderManager; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.support.v4.widget.ResourceCursorAdapter; import android.util.Log; import android.util.SparseBooleanArray; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.Window; import android.widget.CheckBox; import android.widget.ListView; import android.widget.TextView; public class ContactSelect extends FragmentActivity […]

多个ContentProviders的CursorLoader

我需要创建一个ListAdapter来呈现来自多个ContentProviders的数据。 ContentProviders本身代表一个来自关系数据库的表。 我想使用CursorLoader系统将聚合数据检索到ListView中。 这可能与1个装载机有关,还是需要使用多个装载机? 我更喜欢用一个。 我不确定除了在代码中手动连接之外我怎么能让2个ContentProviders互相交互,这似乎也不是一个很好的选择。

MediaStore.Images.Thumbnails.getThumbnail返回错误的缩略图而不是NULL

考虑如下图所示的场景: 三张照片,其中一张是大型GIF文件(3MP)。 我正在查询MediaStore以检索相应的缩略图。 如果我使用此sortOrder通过CursorLoader初始化Cursor: MediaStore.Images.Media.DATE_ADDED + ” DESC”” 会发生什么: MediaStore返回先前成功检索的缩略图: 预期的行为:当MediaStore由于某种原因无法检索给定图像的缩略图时,它必须返回NULL,根据其Javadoc: “…返回一个Bitmap实例。如果与origId关联的原始图像不是,则它可以为null存在或记忆不够。“ 如果我用这个sortOrder初始化Cursor: MediaStore.Images.Media.DATE_ADDED + ” ASC”” 它运行得很好: 但是我不能简单地改变sortOrder,因为要求是先显示最新的图片。 下面是我的示例代码, 这里是完整的示例项目以及用于重现的三个图像 。 package com.example.getimagefrommediastore; import android.app.Activity; import android.database.Cursor; import android.graphics.Bitmap; import android.os.Bundle; import android.provider.MediaStore; import android.support.v4.content.CursorLoader; import android.widget.ImageView; import android.widget.TextView; public class GetThumbnailsFromMediaStoreSampleActivity extends Activity { TextView mThumb_id_01; TextView mThumb_id_02; TextView mThumb_id_03; ImageView mImg_01; ImageView […]

Android eclipse startManagingCursor已弃用但想支持较旧的API版本?

我想了解一些事情,我相信这对某些人来说非常基本。 我到处读到不推荐使用startManagingCursor方法,你应该使用CursorLoader类。 但这是否意味着即使对于支持API级别<11的应用程序,您也应该使用CursorLoader类? 或者它是说如果你打算只支持Honeycomb及以上,那么使用cursorLoader? 我似乎无法使用api 4导入游标加载器类,所以我假设使用CursorLoader在Android 3.0+之前不适用,但有人可以为我validation吗? 谢谢

如何使用ContentProvider的insert()方法通过CursorLoader将值正确插入SQLite数据库?

我正在阅读文档,但我仍然不太确定。 它说要使用getContentResolver() ,但那时确实没有使用CursorLoader。 那么有没有办法通过CursorLoader来做到这一点? 我知道如何使用query() 。 步骤非常相似吗? 即使只是一个可以解释这一点的链接也会有所帮助。 请注意,请不要将我链接到Google文档,因为他们没有使用CursorLoader从ContentProvider中使用insert()方法的示例。 提前致谢!! 编辑:我应该提到我与此混淆的原因是因为调用新的CursorLoader自动调用ContentProviders query()方法。 但是我如何才能为插入做同样的事情呢?

CursorLoader,获取本地数据库的URI

我是一个新手Android程序员,我最近跟着一个教程,该教程展示了如何创建一个本地SQLite数据库,然后使用SQLiteDatabase.rawQuery来返回一个Cursor来访问数据库。 我想修改我的应用程序以使用CursorLoader,这显然是访问数据库的更好方法。 我的问题是CursorLoader构造函数需要给出一个URI。 我只输入“file:/// [db to path]”? 似乎有点凌乱。

使用CursorLoader查询SQLite DB并填充AutoCompleteTextView

我有一个我想查询的SQLite数据库。 我想通过ICS定位Android 2.2。 我遇到了关于如何执行此操作的文章,但它使用了弃用的代码(不是异步查询,而是在UI线程上)。 我已经读过,我可以使用CursorLoader和LoaderManager来执行此任务,这是首选的最佳实践方式(不会让UI线程陷入困境)。 问题是find一个简洁的例子向我解释如何做到这一点。 1)加载数据库,2)查询它,3)使用结果填充AutoCompletetextBox列表视图。 这样的例子存在吗?