• 1 Loader 转载器 Android3.0以后出来的 它可以使Activity和Fragment 异步加载数据 变得简单(Loader里封装了AsyncTask)
  • 2 Loader特点:

    1. 对每一个Activity或者Fragment有效
    2. 提供异步加载数据的机制
    3. 监测数据源的变化 ,并对变化返回新的结果
    4. 由于配置发生改变 重新创建Loader时 他会自动链接上一个加载器游标,不会重新查询数据
  • 3 使用:

    1,初始化Loader initLoader(编号,查询条件,回调接口);

    2,实现回调接口 实现三个方法

    3,在三个方法里做相应的动作

  • 代码例子:

    package com.qf.day18_loader_demo1;
    
    import android.app.Activity;
    import android.app.LoaderManager.LoaderCallbacks;
    import android.content.ContentResolver;
    import android.content.CursorLoader;
    import android.content.Loader;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.ContactsContract;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.widget.EditText;
    import android.widget.ListView;
    import android.widget.SimpleCursorAdapter; public class MainActivity extends Activity implements LoaderCallbacks<Cursor> { private EditText etContent;
    private ListView lv; // 查找数据
    private ContentResolver contentResolver; private SimpleCursorAdapter adapter; private Uri contactsUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); etContent = (EditText) findViewById(R.id.et_content);
    lv = (ListView) findViewById(R.id.lv); etContent.addTextChangedListener(new TextWatcher() { @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    // TODO Auto-generated method stub } @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    // TODO Auto-generated method stub } @Override
    public void afterTextChanged(Editable s) {
    // TODO Auto-generated method stub
    // 文本发生改变
    Bundle bundle = new Bundle();
    bundle.putString("key", s.toString());
    // 当加载数据的条件发生改变时 重启loader
    getLoaderManager().restartLoader(1, bundle, MainActivity.this);
    }
    }); adapter = new SimpleCursorAdapter(MainActivity.this, R.layout.item, null,
    new String[] { "display_name", "data1" }, new int[] { R.id.tv_name, R.id.tv_data },
    SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); lv.setAdapter(adapter); /**
    * 获取当前组件Activity 的Loader对象 获取Loader管理者对象 用对象进行初始化
    *
    */
    getLoaderManager().initLoader(1, null, this); } /**
    * 创建Loader 用于加载数据
    *
    * @param id
    * @param args
    * @return
    */
    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    // TODO Auto-generated method stub
    String selection = null;
    String[] selectionArgs = null; // 有传递过来的数据
    if (args != null) { String key = args.getString("key");
    selection = "display_name like ? or data1 like ?";
    selectionArgs = new String[] { "%" + key + "%", "%" + key + "%" };
    } CursorLoader cursorLoader = new CursorLoader(MainActivity.this, contactsUri,
    new String[] { "_id", "display_name", "data1" }, selection, selectionArgs, null);
    return cursorLoader;
    } /**
    * Loader加载数据完成 调用此方法
    *
    * @param arg0
    * @param arg1
    */
    @Override
    public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
    // TODO Auto-generated method stub
    // 将数据展示到ListView上
    adapter.swapCursor(arg1);
    } /**
    * 重置时 调用此方法
    *
    * @param arg0
    */
    @Override
    public void onLoaderReset(Loader<Cursor> arg0) {
    // TODO Auto-generated method stub
    // 清除旧的数据
    adapter.swapCursor(null);
    } }

17 ContentProvider的更多相关文章

  1. 985硕艰难转行Android之路 加面经分享

    个人情况介绍 本人为某末流985工科硕士,说来令人感慨,我的考研之路异常曲折,每次都觉得自己能十拿九稳,结果每次都阴差阳错,失之交臂,第一次因为那年目标院校大幅度提升初试线,导致差一分未过线,第二次换 ...

  2. 17 一个ContentProvider的例子

    服务端(ContentProvider) 目录结构图: MainActivity.java: package com.qf.day17_contentprovider_words_demo2; imp ...

  3. 四大组件之ContentProvider

    前言 ContentProvider作为Android的四大组件之一,是属于需要掌握的基础知识,可能在我们的应用中,对于Activity和Service这两个组件用的很常见,了解的也很多,但是对Con ...

  4. 解读ContentResolver和ContentProvider

    转自:http://cthhqu.blog.51cto.com/7598297/1281217 1. ContentProvider的概述 ContentProvider: (Official Def ...

  5. contentprovider的学习实例总结

    工作中遇到了contentprovider数据共享机制,下面来总结一下: 一.ContentProvider简介       当应用继承ContentProvider类,并重写该类用于提供数据和存储数 ...

  6. SQLite数据库与Contentprovider(1)

    SQlite:类似mysql的数据库.把数据保存到.db文件夹中. Contentprovider:一般用于不同进程之间的数据共享(两个APP). 手动建库:http://www.runoob.com ...

  7. 基础学习总结(五)---baseAdapter、ContentProvider

    小写转大写 : ctrl+shift+F <ScrollView></ScrollView>滚动条显示视图 ListView与BaseAdapter: public class ...

  8. Android(java)学习笔记247:ContentProvider使用之利用ContentProvider备份和还原手机短信(掌握)

    1.通过阅读系统源码我们知道: 短信的内容提供者: content://sms/            系统短信的内容提供者的路径 2. 利用ContentProvider备份和还原手机短信: (1) ...

  9. Android(java)学习笔记245:ContentProvider使用(银行数据库创建和增删改查的案例)

    1. Android的四大组件: (1)Activity  用户交互的UI界面 (2)Service  后台运行的服务 (3)BroadcastReceiver 广播接收者 (4)ContentPro ...

随机推荐

  1. [SPOJ962]Intergalactic Map 拆点+最大流

    Jedi knights, Qui-Gon Jinn and his young apprentice Obi-Wan Kenobi, are entrusted by Queen Padmé Ami ...

  2. 【bzoj4445 scoi2015】小凸想跑步

    题目描述 小凸晚上喜欢到操场跑步,今天他跑完两圈之后,他玩起了这样一个游戏. 操场是个凸 nn 边形, nn 个顶点按照逆时针从 00 ∼ n - 1n−1 编号.现在小凸随机站在操场中的某个位置,标 ...

  3. 【NOIP2004】虫食算

    Description 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +. 8468#6633 444455 ...

  4. Codeforces 671 D. Roads in Yusland

    题目描述 Mayor of Yusland just won the lottery and decided to spent money on something good for town. Fo ...

  5. gift 分数规划的最大权闭合子图

    题目大意: N个物品,物品间有M组关系,每个物品有一个ai的代价,满足关系后会得到bi的值 求 max(sigma(bi)/sigma(ai)) 题解: 很明显的最大权闭合子图,只不过需要处理分数. ...

  6. poj 1279 半平面交核面积

    Art Gallery Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6668   Accepted: 2725 Descr ...

  7. PTA 邻接表存储图的广度优先遍历(20 分)

    6-2 邻接表存储图的广度优先遍历(20 分) 试实现邻接表存储图的广度优先遍历. 函数接口定义: void BFS ( LGraph Graph, Vertex S, void (*Visit)(V ...

  8. vsftpd详解(ubuntu)

    安装 apt-get instll vsftpd 配置vsftp vim vsftpd.conf listen=YES listen_port= anonymous_enable=NO local_e ...

  9. bzip2

    压缩和解压缩文件bzip2 options] [file-list] bunzip2 [options] [file-list] bzcat [options] [file-list] bzip2re ...

  10. substr和substring的区别

    substr和substring两个都是截取字符串的. 两者有相同点,如果只是写一个参数,两者的作用都是一样的:就是截取字符串当前下标以后直到字符串最后的字符串片段. 例如:`var a=”abcde ...