zoukankan      html  css  js  c++  java
  • loader的简单使用过程分析

    首先,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上面

    package com.example.u3.actionbartest2;
    
    import android.app.Fragment;
    import android.app.ListFragment;
    import android.app.LoaderManager;
    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.AndroidCharacter;
    import android.widget.SimpleCursorAdapter;
    
    
    /**
     * Created by U3 on 2015/3/10.
     */
    public class TestFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor>{
        private SimpleCursorAdapter madapter;
        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            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);
            setListAdapter(madapter);
            getLoaderManager().initLoader(0,null,this);
        }
        static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
                ContactsContract.Contacts._ID,
                ContactsContract.Contacts.DISPLAY_NAME,
                ContactsContract.Contacts.CONTACT_STATUS,
              //  ContactsContract.Contacts.CONTACT_PRESENCE,
               // ContactsContract.Contacts.PHOTO_ID,
              //  ContactsContract.Contacts.LOOKUP_KEY,
        };
        @Override
        public Loader<Cursor> onCreateLoader(int id, Bundle args) {
            Uri uri;
            uri = ContactsContract.Contacts.CONTENT_URI;
            String select = "(("+ContactsContract.Contacts.DISPLAY_NAME+" NOTNULL) AND ("+ ContactsContract.Contacts.HAS_PHONE_NUMBER +"=1) AND ("+ ContactsContract.Contacts.DISPLAY_NAME +" != ''))";
            /*String select = "((" + ContactsContract.Contacts.DISPLAY_NAME + " NOTNULL) AND ("
                    + ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1) AND ("
                    + ContactsContract.Contacts.DISPLAY_NAME + " != '' ))";*/
            return new CursorLoader(getActivity(),uri,CONTACTS_SUMMARY_PROJECTION,select,null,null);
        }
    
        @Override
        public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
            madapter.swapCursor(data);
        }
    
        @Override
        public void onLoaderReset(Loader<Cursor> loader) {
            madapter.swapCursor(null);
        }
    }
    -----人若无名,则可专心练剑
  • 相关阅读:
    SQL 数据库 复制 与订阅 实现数据同步
    SQL 2008配置管理工具服务显示 远程过程调用失败0x800706be
    SQL2005中使用identity_insert向自动增量字段中写入内
    【树莓派】【转载】基于树莓派,制作家庭媒体中心+下载机
    Linux 按时间批量删除文件(删除N天前文件)
    【树莓派】为树莓派配置或扩展swap分区
    开源硬件相关平台
    【树莓派】树莓派上刷android系统
    【树莓派】树莓派上面安装配置teamviewer
    【树莓派】使用xdrp远程登录树莓派的图形界面
  • 原文地址:https://www.cnblogs.com/u3shadow/p/4328736.html
Copyright © 2011-2022 走看看