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);
        }
    }
    -----人若无名,则可专心练剑
  • 相关阅读:
    Representation Data in OpenCascade BRep
    Render OpenCascade Geometry Surfaces in OpenSceneGraph
    Render OpenCascade Geometry Curves in OpenSceneGraph
    OpenCascade Shape Representation in OpenSceneGraph
    Geometry Surface of OpenCascade BRep
    Geometry Curve of OpenCascade BRep
    Tyvj2017清北冬令营入学测试
    Spfa算法模板
    洛谷1016 旅行家的预算
    洛谷1290 欧几里得的游戏
  • 原文地址:https://www.cnblogs.com/u3shadow/p/4328736.html
Copyright © 2011-2022 走看看