mic*_*lli 44 android android-fragments android-cursoradapter
我在我的项目中使用Android兼容性库.我已经按照DevGuide(http://developer.android.com/reference/android/app/Fragment.html)中的描述设置了ListFragment ,并且使用了一个简单的CursorLoader Christian而没有内容提供者(没有ContentProvider的CursorLoader用法)).
问题是,在我的ListFragment/parent Activity中,我应该打开数据库,返回Cursor,创建Adapter和setListAdapter?
所以在我的应用程序中,我有TitlesFragment,DetailsFragment,FragmentLayoutActivity,DetailsLayoutActivity.
是最好的做法......
在ListFragment中打开数据库并在ListFragment中onActivityCreated
关闭它,onDestroy
就像在下面的代码示例中一样
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// Open database
playersDatabaseHelper = new PlayersDBAdapter(getActivity());
playersDatabaseHelper.open();
getLoaderManager().initLoader(0, null, this);
...
}
@Override
public void onDestroy() {
super.onDestroy();
if (playersDatabaseHelper != null) {
playersDatabaseHelper.close();
}
}
Run Code Online (Sandbox Code Playgroud)查询数据库并返回光标onCreateLoader
,并onLoadFinished
在下面的代码示例中创建Adapter和setListAdapter
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
// Now create and return a CursorLoader that will take care of
// creating a Cursor for the data being displayed.
return new MyCursorLoader(getActivity()) {
@Override
public Cursor loadInBackground() {
playersCursor = playersDatabaseHelper.getAllPlayers();
return playersCursor;
}
};
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
// Create an empty adapter we will use to display the loaded data.
playersAdapter = new RowAdapter(getActivity(), playersCursor, R.layout.players_overview_row);
// Allocate the adapter to the List displayed within this fragment.
setListAdapter(playersAdapter);
playersAdapter.swapCursor(cursor);
// The list should now be shown.
if (isResumed()) {
setListShown(true);
} else {
setListShownNoAnimation(true);
}
}
Run Code Online (Sandbox Code Playgroud)我是在正确的轨道上还是应该将其中一些移动到某个地方?谢谢你的时间!
抱歉没有CursorLoader和Fragment的经验,但我已经在不同线程和活动的并发访问环境中使用了SQLiteOpenHelper.
我将假设PlayersDBAdapter在内部使用SQLiteOpenHelper类.但是不清楚你的方法open()和close()是做什么的?
我做了什么:
至少这是有效的,在具有数千个用户的应用程序中没有崩溃.欢迎提出改进的建议:-)
归档时间: |
|
查看次数: |
12208 次 |
最近记录: |