Android 数据存储之使用 CursorLoader 加载数据

本文介绍了如何在Android中使用CursorLoader加载数据,避免主线程阻塞。CursorAdapter用于根据Cursor填充ListView,而CursorLoader则在后台线程执行ContentResolver查询,当数据改变时自动刷新。文章详细讲解了CursorLoader的使用过程和自动加载机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CursorAdapter 简介

Adapter:Responsible for making a list item view for each item in data source.

正如上面所说,适配器为数据源中的每个项创建列表项视图。例如,如果我们的数据源为 ArrayList 比如由文字组成的 ArrayList,那么我们就需要使用 ArrayAdapter 来填充列表。如果数据源是一个 Cursor,比如`”cursor of pets”“(前面宠物的例子),那我们就需要使用 CursorAdapter 来填充列表。

这里写图片描述

如上图所示,ListView 刚开始是空的,我们设置一个 CursorAdapter 与我们从 PetProvider 获得的宠物 Cursor 关联起来,同时确保 CursorAdapter 知道如何为每个宠物创建列表项视图。首先 ListView 将询问适配器最终要显示在界面上的列表有多少项,接下来从位置 0 开始请求每一项,适配器将 Cursor 移至第 0 行,提取此行的值,为该宠物设置正确的列表项,然后将此列表项回传至 ListView 。ListView 继续请求位置 1 的项,CursorAdpater 将 Cursor 移至第 1 行,读取其中的值,设置相应的列表视图,然后传回到 ListView。重复上面的动作,ListView 将持续请求每个位置的项,直到 Cursor 中没有宠物或屏幕已填满。

创建列表视图的过程

这里写图片描述
假设 ListView 要求位置 0 处的列表项,那么 CursorAdapter 首先需要创建一个空白列表项,这涉及到填充一个 xml 布局,该布局包括我们想要显示的内容控件。然后我们需要使用 Cursor 中的正确数据填充我们的内容控件。由于我们感兴趣的是位置 0 处的宠物,我们将 Cursor 位置移动到 0 行,提取出需要展示的内容,将内容填充到我们的列表项

Populating a ListView with a CursorAdapter

CursorLoader 简介

主线程负责处理全部用户输入和所有绘制操作,如果 Activity 在主线程上执行时间密集型的工作,可能会使应用卡住,甚至停止对用户输入做出响应。所以不要在主线程执行任何运行时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值