android cursor 实例化,android – 使用CursorLoader在ListFragment中查询SQLite数据库的最佳实践?...

我在我的项目中使用Android兼容性库。我设置了ListFragment如DevGuide(

http://developer.android.com/reference/android/app/Fragment.html)中所述,并使用一个简单的CursorLoader Christian使用没有内容提供者(

Usage CursorLoader without ContentProvider)。

问题是,在我的ListFragment / parent Activity中,应该打开数据库,返回Cursor,创建Adapter和setListAdapter?

所以在我的应用程序,我有TitlesFragment,DetailsFragment,FragmentLayoutActivity,DetailsLayoutActivity。

是最佳做法…

>在ListFragment的onActivityCreated中打开数据库,并在ListFragment的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();

}

}

>查询数据库并在onCreateLoader中返回游标,并在onLoadFinished中创建Adapter和setListAdapter,如下面的代码示例所示

@Override

public Loader 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 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);

}

}

我在正确的轨道上,还是我应该移动一些地方?谢谢你的时间!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值