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);
        }
    }
    -----人若无名,则可专心练剑
  • 相关阅读:
    MySql存储过程—2、第一个MySql存储过程的建立
    MYSQL 存储过程1、SQL存储过程的基础知识
    [转]忍无可忍 献上一曲维族歌曲 《我们的客户是花园》(吐槽)
    由硬盘供电不稳、数据线品质差造成的蓝屏
    music Elton John
    一个人在艰苦中能雄起,那是能力和毅力,一个人在安逸中能雄起,那是自觉和自律。
    安装VS2012出问题后,反复重启电脑。
    山寨、低端、劣质的机箱前置面板的悲剧。
    SQL Server Management Studio (SSMS) 清除登录记录
    DataTable 分批处理,每批处理4行
  • 原文地址:https://www.cnblogs.com/u3shadow/p/4328736.html
Copyright © 2011-2022 走看看