• 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. Codeforces Round #460 E. Congruence Equation

    Description 题面 \(n*a^n≡b (\mod P),1<=n<=x\) Solution 令 \(n=(P-1)*i+j\) \([(P-1)*i+j]*a^{[(P-1) ...

  2. ●BZOJ 3527 [Zjoi2014]力

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3527 题解: FFT求卷积. $$\begin{aligned}E_i&=\frac ...

  3. 决战 状压dp

    决定在这个小巷里排兵布阵.小巷可以抽象成一个们彼此之间并不是十分和♂谐.具体来说,一个哲学家会有一个的矩形.每一位哲学家会占据一个格子.然而哲学家的01矩阵来表示他自己的守备范围.哲学家自己位于这个矩 ...

  4. 51Nod 1196 字符串的数量

    用N个不同的字符(编号1 - N),组成一个字符串,有如下要求: (1) 对于编号为i的字符,如果2 * i > n,则该字符可以作为结尾字符.如果不作为结尾字符而是中间的字符,则该字符后面可以 ...

  5. Serpent.AI – 游戏代理框架(Python)

    Serpent.AI - 游戏代理框架(Python) Serpent.AI是一个简单而强大的新颖框架,可帮助开发人员创建游戏代理.将您拥有的任何视频游戏变成一个成熟的实验的沙箱环境,所有这些都是熟悉 ...

  6. PTA 社交网络图中结点的“重要性”计算(30 分)

    7-12 社交网络图中结点的“重要性”计算(30 分) 在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来.他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互 ...

  7. Comparators.sort (转载)

    Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f, ...

  8. Parallel.For 平行算法 使用

    之前看到Parallel的用法,觉得很高深,很腻害,今天专门抽空研究了一下,发现还是很easy的. .NET Framework 4.0 新加的功能,所以4.0之前的无法使用哦. 下面介绍一下,Par ...

  9. 【转】动态规划DP

    [数据结构与算法] DP 动态规划 介绍 原创 2017年02月13日 00:42:51 最近在看算法导论. DP全称是dynamic programming,这里programming不是编程,是一 ...

  10. Java不走弯路教程(前言)

    本教程的程序基于Windows开发,所以你需要有一台安装Windows操作系统的电脑. 前言本教程将带你完成Java的初学和WEB框架的开发,学完本教程,你将完成对Java的入门并且对下一步不再迷茫. ...