【发布时间】:2012-01-03 03:22:02
【问题描述】:
我正在尝试创建一个ContentProvider,每条记录都包含一个问题和相应的答案。以及显示每个问题和答案的 TextView 的 Activity 以及这些 TextView 下方的“下一步”按钮。单击下一步按钮时,我希望显示下一个问题和答案。
我正在尝试使用 CursorLoader 和 LoaderManager,因为 CursorLoader 将它们的数据保存在 onStop() 和 onStart() 之间,我正在尝试了解 CursorLoaders 和 LoaderManagers。
我找到的示例都使用setListAdapter(),但我不希望我的活动看起来像一个列表。我试图通过使用SimpleCursorAdapter 并在我的main.xml 布局中使用bindView() 来解决这个问题。不确定这是否可行。
如果我有一个普通的光标,我会使用moveToNext(),但对于LoaderManager,我似乎必须使用restartLoader() 进行新查询。我认为创建一个新查询比简单地使用游标转到下一条记录要花费更多时间。特别是因为我必须知道当前或下一条记录的位置。
所以我的问题是:我可以使用CursorLoader 和LoaderManager 逐条记录地浏览数据库,而不必为下一条记录进行新的查询吗?还是 CursorLoaders 和 LoaderManagers 真的只适用于 ListViews?
到目前为止,这是我的代码,我意识到它并不多,但我已经阅读并重新阅读了有关 Loaders 和 LoadManagers 的 Android 页面。
public class Main extends Activity implements LoaderManager.LoaderCallbacks<Cursor>{
SimpleCursorAdapter adapter;
String curFilter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.adapter = new SimpleCursorAdapter(getApplicationContext(),
R.layout.main,
null,
new String[]{},
new int[]{R.id.questionText,R.id.answerText},
0);
LinearLayout mainLayout = (LinearLayout)findViewById(R.id.mainLayout);
this.adapter.bindView(mainLayout, getApplicationContext(), null);
this.getLoaderManager().initLoader(0,null, this);
Button nextQuestionButton = (Button)this.findViewById(R.id.Nextbutton);
nextQuestionButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick (View v) {
}
});
}
【问题讨论】:
标签: android android-loadermanager