ContentProvider
質問と対応する回答を含む各レコードでを作成しようとしています。そして、各質問と回答のTextViewを表示するアクティビティと、それらのTextViewの下にある[次へ]ボタン。[次へ]ボタンをクリックすると、次の質問と回答が表示されます。
onStop()
CursorLoaderはデータをとに保持するため、CursorLoaderとLoaderManagerを使用しようとしています。またonStart()
、とについて学習しようとしていCursorLoaders
ますLoaderManagers
。
私が見つけた例はすべて使用setListAdapter()
していますが、私のアクティビティをリストのように見せたくありません。SimpleCursorAdapter
を使用bindView()
してmain.xml
レイアウトを使用することで、これを回避しようとしました。それがうまくいくかどうかはわかりません。
プレーンカーソルがある場合はを使用しますmoveToNext()
が、その場合は新しいクエリを使用する必要があるLoaderManager
ようです。restartLoader()
新しいクエリを作成するには、カーソルを使って次のレコードに移動するよりも時間がかかると思います。特に、現在または次のレコードの位置を知る必要があるためです。
だから私の質問は:次のレコードのために新しいクエリを作成することなく、CursorLoader
とを使用LoaderManager
してデータベースを調べ、レコードごとに記録することはできますか?それともCursorLoaders
、LoaderManagers
本当にListViews専用ですか?
これまでの私のコードは次のとおりです。それほど多くはないことに気付きましたが、ローダーとロードマネージャーで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) {
}
});
}