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);
        }
    }
    -----人若无名,则可专心练剑
  • 相关阅读:
    杂记
    [POI2015]PUS
    CF786B Legacy(线段树优化建图)
    SP11470 TTM
    [WC2010]重建计划
    [HNOI2014]世界树
    luogu P4842 城市旅行
    [SDOI2016]征途
    [APIO2014]序列分割
    上下界网络流构图证明
  • 原文地址:https://www.cnblogs.com/u3shadow/p/4328736.html
Copyright © 2011-2022 走看看