4

質問のリストを表示するカスタム ArrayAdapter を作成しました。データベースにクエリを実行し、そのデータを変換し、データを配列に渡し、その配列を ArrayAdapter に渡してリストを表示します。

dbData = getDbData();
List<Question> questions = getQuestions(1L);
dbData.closeDb();
setContentView(R.layout.activity_questions);
adapter = new QuestionsAdapter(this, getCurrentContext(), questions, 1L, dbData);

私のアプリでは、さまざまな質問をクリックし、いくつかのものを操作して、メイン リストに戻ることができます。変更がデータベースに保持されているため、基になる配列はまだ変更されていません。再度データベースにクエリを実行し、変換を実行すると、アレイが最新の状態になります。メソッドでこれを行いますonResume()が、アダプターはメソッドの変更を認識しませんnotifyDataSetChanged()。私onResume()はこのように見えます:

@Override
protected void onResume() {
    super.onResume();
    dbData = getDbData();
    questions = getQuestions(1L);
    adapter = new QuestionsAdapter(this, getCurrentContext(), questions, 1L, dbData);
    items.setAdapter(adapter);
}

データベースにクエリを実行し、変換を行い、配列を作成してから、変更内容がメイン リストに表示されるように新しいアダプターを作成する必要があります。なぜ私はできないのですか:

@Override
protected void onResume() {
    super.onResume();
    dbData = getDbData();
    questions = getQuestions(1L);
    adapter.notifyDataSetChanges();
}

これを機能させるにはどうすればよいですか? 助けてくれてありがとう。

4

1 に答える 1