首先,fragment或者activity必须实现callback接口

必须实现的三个方法为

public Loader<Cursor> onCreateLoader(int id, Bundle args)

public void onLoadFinished(Loader<Cursor> loader, Cursor data)

public void onLoaderReset(Loader<Cursor> loader)

其次,在使用getloadermanager().initLoader(id,data,callback)

来开始这个过程

下面是使用实例,异步获取联系人信息,加载到list上面

  1. package com.example.u3.actionbartest2;
  2.  
  3. import android.app.Fragment;
  4. import android.app.ListFragment;
  5. import android.app.LoaderManager;
  6. import android.content.CursorLoader;
  7. import android.content.Loader;
  8. import android.database.Cursor;
  9. import android.net.Uri;
  10. import android.os.Bundle;
  11. import android.provider.ContactsContract;
  12. import android.text.AndroidCharacter;
  13. import android.widget.SimpleCursorAdapter;
  14.  
  15. /**
  16. * Created by U3 on 2015/3/10.
  17. */
  18. public class TestFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor>{
  19. private SimpleCursorAdapter madapter;
  20. @Override
  21. public void onActivityCreated(Bundle savedInstanceState) {
  22. super.onActivityCreated(savedInstanceState);
  23. madapter = new SimpleCursorAdapter(getActivity(), android.R.layout.activity_list_item,null,new String[]{ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.CONTACT_STATUS},new int[]{android.R.id.text1,android.R.id.text2},0);
  24. setListAdapter(madapter);
  25. getLoaderManager().initLoader(0,null,this);
  26. }
  27. static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
  28. ContactsContract.Contacts._ID,
  29. ContactsContract.Contacts.DISPLAY_NAME,
  30. ContactsContract.Contacts.CONTACT_STATUS,
  31. // ContactsContract.Contacts.CONTACT_PRESENCE,
  32. // ContactsContract.Contacts.PHOTO_ID,
  33. // ContactsContract.Contacts.LOOKUP_KEY,
  34. };
  35. @Override
  36. public Loader<Cursor> onCreateLoader(int id, Bundle args) {
  37. Uri uri;
  38. uri = ContactsContract.Contacts.CONTENT_URI;
  39. String select = "(("+ContactsContract.Contacts.DISPLAY_NAME+" NOTNULL) AND ("+ ContactsContract.Contacts.HAS_PHONE_NUMBER +"=1) AND ("+ ContactsContract.Contacts.DISPLAY_NAME +" != ''))";
  40. /*String select = "((" + ContactsContract.Contacts.DISPLAY_NAME + " NOTNULL) AND ("
  41. + ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1) AND ("
  42. + ContactsContract.Contacts.DISPLAY_NAME + " != '' ))";*/
  43. return new CursorLoader(getActivity(),uri,CONTACTS_SUMMARY_PROJECTION,select,null,null);
  44. }
  45.  
  46. @Override
  47. public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
  48. madapter.swapCursor(data);
  49. }
  50.  
  51. @Override
  52. public void onLoaderReset(Loader<Cursor> loader) {
  53. madapter.swapCursor(null);
  54. }
  55. }

loader的简单使用过程分析的更多相关文章

  1. 如何开发webpack loader

    关于webpack 作为近段时间风头正盛的打包工具,webpack基本占领了前端圈.相信你都不好意思说不知道webpack. 有兴趣的同学可以参考下我很早之前的webpack简介 . 确实webpac ...

  2. 手把手教你撸一个 Webpack Loader

    文:小 boy(沪江网校Web前端工程师) 本文原创,转载请注明作者及出处 经常逛 webpack 官网的同学应该会很眼熟上面的图.正如它宣传的一样,webpack 能把左侧各种类型的文件(webpa ...

  3. Loader的初步学习笔记

    Loader是一个异步加载数据的类,它和AsyncTask有类似也有不同,今天我们就先来学习下它.由于是对比学习,所以我们先来复习下AsyncTask的使用和特点. 一.AsyncTask 参考自:h ...

  4. vue之loader处理静态资源

    webpack 是利用loader 来处理各种资源的,wepback的配置基本上就是为各种资源文件,指定不同类型的loader. 1,处理css 最基本的css 处理loader 是css-loade ...

  5. webpack系列之loader的基本使用

    可以访问 这里 查看更多关于大数据平台建设的原创文章. webpack系列之loader及简单的使用 一. loader有什么用 webpack本身只能打包Javascript文件,对于其他资源例如  ...

  6. 最火的分布式调度系统 XXL-JOB 安装和简单使用

    唉,在谈文章之前先说一下自己的情况.原计划是在上周六写完这篇文章的,然而周六的时候打开电脑的,按照平常"惯例",先补一些 "黑色五叶草"/"进巨&qu ...

  7. webpack的世界

    本文也是多次学习webapck积累下来的知识点,一直在云笔记里. webpack的原理 webpack构建流程 从启动webpack构建到输出结果经历了一系列过程,它们是: 解析webpack配置参数 ...

  8. SOFA 源码分析 — 扩展机制

    前言 我们在之前的文章中已经稍微了解过 SOFA 的扩展机制,我们也说过,一个好的框架,必然是易于扩展的.那么 SOFA 具体是怎么实现的呢? 一起来看看. 如何使用? 看官方的 demo: 1.定义 ...

  9. 《嵌入式Linux内存使用与性能优化》笔记

    这本书有两个关切点:系统内存(用户层)和性能优化. 这本书和Brendan Gregg的<Systems Performance>相比,无论是技术层次还是更高的理论都有较大差距.但是这不影 ...

随机推荐

  1. Difference between menu item types; Display, Output and Action in Dynamics Ax

    Difference between menu item types; Display, Output and Action in Dynamics Ax Developers often ask m ...

  2. jmeter-察看结果树-响应数据,中文显示乱码问题处理

    第一步: 打开路径:jmeter\bin\jmeter.properties 文件 第二步: 文件中默认编码为:ISO-8859-1 修改为utf-8 sampleresult.default.enc ...

  3. Oracle删除步骤

    1.Oracle卸载要求比较严格,不能简单的卸载就完事了:当然Oracle卸载也没有那么难,只是步骤比较多.Oracle10g还是Oracle11g卸载步骤都是一样的.下边详细介绍一下. 找到Orac ...

  4. 完全分布式安装hadoop集群

    0.安装jdk 1.配置hosts文件 2.建立hadoop运行账号 3.配置ssh免密码登录 4.在namenode上配置hadoop 4.1.修改hadoop-env.sh文件 4.2.修改yar ...

  5. git常用别名设置,保存一份

    git配置别名设置,保存一份 若git  config  --global  xxxx 设置,则文件一般在 C:\Users\Administrator\.gitconfig [alias] lg = ...

  6. 【WPF】推荐一款拖拉缩放控件的DEMO

    引言 在CodeProject上有个实现了控件拖拉缩放的DEMO,界面很漂亮,里面对Thumb和Adorner运用得很精彩.我觉得,使用WPF的开发者都可以去学习一下.下面放出链接. WPF Diag ...

  7. LeetCode OJ:Unique Paths(唯一路径)

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  8. php中实现将姓名拆分为姓氏和名字

    之前有分享了用javascript在客户端进行姓名拆分的方法,后应项目需要,又用PHP实现了,贴出来 跟大家分享交流: /** * 把全名拆分为姓氏和名字 * @param string $fulln ...

  9. IO编程、操作文件或目录、序列化、JSON

    IO中指Input/Output,即输入和输出:涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口 1.由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,存在速度严重不匹配问题.eg ...

  10. 【机器学习】集成学习之xgboost的sklearn版XGBClassifier使用教程

    XGBClassifier是xgboost的sklearn版本.代码完整的展示了使用xgboost建立模型的过程,并比较xgboost和randomForest的性能. # -*- coding: u ...