initialization
LoaderManager = loaderManager = getActivity().getSupportLoaderManager(); loaderManager.initLoader(0, null, new ContactsFragment.ContactsCallBack());
Call the inner class of MySessionCallback
private class MySessionCallback implements LoaderManager.LoaderCallbacks<Cursor> { @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { if (id == ID) { return new CursorLoader(getActivity(), SmsProvider.SESSION_URI, null, "from_account=? or to_account=? group by session_account", new String[]{IMService.CURRENT_ACCOUNT, IMService.CURRENT_ACCOUNT}, "time asc"); } else { return null; } } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { if (adapter != null) { adapter.getCursor().requery(); return; } Log.i(TAG, "onLoadFinished: "); adapter = new SessionAdapter(getActivity(), data, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); mListView.setAdapter(adapter); } @Override public void onLoaderReset(Loader<Cursor> loader) { } }
Call the CursorAdapter class to implement the methods to display the data:
private class SessionAdapter extends CursorAdapter { public SessionAdapter(Context context, Cursor c, int flags) { super(context, c, flags); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { return View.inflate(context, R.layout.item_session, null); } @Override public void bindView(View view, Context context, Cursor cursor) { ImageView ivHead = (ImageView) view.findViewById(R.id.head); TextView tvBody = (TextView) view.findViewById(R.id.body); TextView tvNickName = (TextView) view.findViewById(R.id.nickname); String body = cursor.getString(cursor.getColumnIndex(SmsHelper.SmsTable.BODY)); String acccount = cursor.getString(cursor.getColumnIndex(SmsHelper.SmsTable.SESSION_ACCOUNT)); tvBody.setText(body); tvNickName.setText(acccount); } }