<span style="color: rgb(51, 51, 51); font-family: Georgia, 'Times New Roman', Times, sans-serif; font-size: 14px; line-height: 25.2px;"></span><pre name="code" class="java">CursorLoader<span style="font-family: Georgia, 'Times New Roman', Times, sans-serif; line-height: 25.2px;">提供了一个基于AsyncTaskLoader工作机制的Loader,查看源码可以看到其继承于AsyncTaskLoader,一般继承OnQueryTextListener,可用于查询、更改数据源作用。</span>
public class MainActivity extends Activity implements LoaderCallbacks<Cursor>{
private ListView listview;
private TextView tvEmpty;
private SimpleCursorAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview = (ListView) findViewById(R.id.lv_display_sms);
tvEmpty = (TextView) findViewById(R.id.tv_empty);
LoaderManager manager=getLoaderManager();
adapter = new SimpleCursorAdapter(getApplicationContext(), R.layout.activity_item, null, new String[]{"address","body"}, new int[]{R.id.tv_address,R.id.tv_content},SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
listview.setAdapter(adapter);
//有数据就显示listview 没有数据就显示textview
listview.setEmptyView(tvEmpty);
manager.initLoader(1, null, this);
}
@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
CursorLoader loader=new CursorLoader(getApplicationContext(), Uri.parse("content://sms"), null, null, null, null);
return loader;
}
@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
adapter.swapCursor(arg1);
}
@Override
public void onLoaderReset(Loader<Cursor> arg0) {
adapter.swapCursor(null);
}
}