0

Android用のアプリをプログラミングしています。私はGitHubにアップロードしました:appデータベースの行を変更した後にRecyclerViewが更新されない

2つのフラグメントを制御するViewPager(MainActivity.java)があります。最初のフラグメント(FirstFragment.java)には、RecyclerViewに表示されるPeople(People.java)を追加できます(FirstFragment.javaにもあります)。 RecyclerViewのリストアイテムの1つをクリックすると、その詳細(名前とID)が2番目のフラグメント(SecondFragment.java)に表示されます。 SecondFragment.javaには、選択した人物を削除できるボタンもあります。

Peopleオブジェクトを格納するには、Peopleのリストを使用してPeopleLab.javaのメソッドで管理しました。プログラムは正常に動作していました。リストにPeopleオブジェクトを追加/削除でき、RecyclerView上に表示されます。
その後、私はListをデータベースに置き換えることに決めました。それは、データベース(データベースフォルダ内の3つのファイル)を作成し、既存の2つの新しいメソッドをPeopleLab.javaに編集することを意味しました。他のファイルは変更されませんでした。 データベースは期待どおりに動作しています(sqlite3でチェックしています)。前と同じようにPeopleを追加/削除でき、クエリが機能します。私の唯一の問題は、変更がRecyclerViewに表示されないことです。しかし、私がアプリケーションを閉じて再度開くと、変更が表示されます。 RecyclerViewは、実行時にデータベースを気にしないように、アプリケーションの起動時(または終了時、わかりません)にのみ実行されます。

何が原因で問題が発生する可能性がありますか?私の唯一の推測は、Androidアプリケーションがデータベースをどのように扱うかについて何か忘れていることです。

P .:私の英語には申し訳ありません。

答えて

0

notifyDataSetChanged()をアダプタで呼び出すが、そのアダプタの新しいデータは提供しない。あなたのFirstFragment

private void updateUI() { 
    PeopleLab peopleLab = PeopleLab.get(getActivity()); 
    List<People> peoples = peopleLab.getPeople(); 

    if(mAdapter == null) { 
     mAdapter = new PeopleAdapter(peoples); 
     mRecyclerView.setAdapter(mAdapter); 
    } else { 
     // You actually have to change your dataset 
     mAdapter.changeDataSet(peoples); 
    } 
} 

そして、あなたのAdapter中:

public void changeDataSet(List<People> people) { 
    this.mPeoples = people; 
    notifyDataSetChanged(); 
} 

このかかわらず、それを行うには、いくつかの残忍な方法。 notifyItemInserted(int itemPosition)またはnotifyItemRemoved(int itemPosition)を挿入/取り外し時にアダプタに通知する方が良いでしょう。 (そして、あなたのデータセットをリフレッシュする)

+1

ありがとう、それは働いている! – ftibi93

+0

あなたは大歓迎です、楽しんでください。 – Xalamadrax

0

それはそのアダプタがCursorLoaderを使用することができますadapter.notifyDataSetChanged()

または使用使用して行うことができフェッチとdata.Itをリロードすることができるようにautomatically.Youは、基になるデータが変更されたアダプタに通知するために使用することができますいずれかの動作しません。これを達成する

+0

私はすでにnotifyDataSetChanged()を使用しています。これはボタンの(データベースに新しい行を追加する)onClickListenerで呼び出され、別のボタンがあります。これは目的を呼ぶだけです。 – ftibi93

関連する問題