使用CursorLoader异步加载数据

  

Android 3.0引入了CursorLoader实现异步加载数据,为了避免同步查询数据库时阻塞UI线程的问题。在API 11之前可以通过下载支持库,来使之前的系统支持此功能。

  

下面是一个例子:

        公共类ListViewLoader ListActivity延伸   实现LoaderManager.LoaderCallbacks{//这是适配器被用来显示列表的数据   SimpleCursorAdapter mAdapter;//这是我们将检索联系人行   静态final String[]投影=new String [] {ContactsContract.Data._ID,   ContactsContract.Data.DISPLAY_NAME};//这是一个选择的标准   静态字符串最后选择=" (" +   ContactsContract.Data。DISPLAY_NAME +“NOTNULL)和(“+   ContactsContract.Data。DISPLAY_NAME + " !="))”;      @Override   保护无效onCreate(包savedInstanceState) {   super.onCreate (savedInstanceState);//创建一个进度条来显示在列表加载   ProgressBar ProgressBar=new ProgressBar(这个);   progressBar。setLayoutParams(新LayoutParams (LayoutParams.WRAP_CONTENT   LayoutParams。WRAP_CONTENT Gravity.CENTER));   progressBar.setIndeterminate(真正的);   getListView () .setEmptyView (progressBar);//必须添加进度条到根的布局   ViewGroup根=(ViewGroup) findViewById (android.R.id.content);   root.addView (progressBar);//光标适配器,指定哪些列进入这观点   String [] fromColumns={ContactsContract.Data.DISPLAY_NAME};   int[]要查看={android.R.id.text1};//simple_list_item_1 TextView//创建一个空的适配器我们将使用显示加载数据。//我们传递null指针,然后更新它在onLoadFinished ()   mAdapter=new SimpleCursorAdapter(这一点,   android.R.layout。simple_list_item_1、零   fromColumns要查看0);   setListAdapter (mAdapter);//加载程序做准备。经常和一个现有的,//或开始一个新的。   getLoaderManager ()。initLoader (0, null,这);   }//时调用一个新的加载程序需要创建   公共LoaderonCreateLoader (int id、包args) {//现在创建并返回一个CursorLoader照顾//创建一个数据显示光标。   返回新CursorLoader (ContactsContract.Data.CONTENT_URI,这   投影、选择、空、空);   }//之前创建的装载机已完成加载时调用   公共空间onLoadFinished (Loader装载机,游标数据){//交换的新游标。(框架将负责关闭//旧游标一旦我们回报。)   mAdapter.swapCursor(数据);   }//时调用重置以前创建的装载机,使数据不可用   公共空间onLoaderReset (Loader装载机){//这叫做当最后一个光标提供onLoadFinished ()//以上即将关闭。我们需要确保我们没有//再使用它。   mAdapter.swapCursor(空);   }      @Override   公共空间onListItemClick (ListView l,视图v, int位置,长id) {//点击列表项时做些什么   }   }   之前      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

使用CursorLoader异步加载数据