DialogFragment
アイテムをデータベーステーブルに追加する場所があります。
そして、私は別Fragment
のものを持っています、それはListView
私がデータベースからのすべてのアイテムを表示しているところを持っています。ListView
アイテムをデータベースに追加することはできますが、データベースからアイテムをフェッチしているにすぐには表示されません。
のグローバル変数を作成しますMyListAdapter
MyListAdapter adapter;
...
adapter = new MyListAdapter(getActivity(), my);
存在するフラグメントにゲッターを作成します。
public MyListAdapter getAdapter() {
return adapter;
}
データベースに新しいエントリを作成するときは、次のように呼び出します。
//Make sure you make a tag when you add your fragment
MyFrag f = (MyFrag) getActivity().getSupportFragmentManager()
.findFragmentByTag(YOURTAGHERE);
f.getAdapter().notifyDataSetChanged();
これは機能するはずですが、それを実行するには、独自のデバッグ/ロジックを実行する必要があります。
編集:これが方法です:
public void updateList() {
List<MyItem> l = db.getAllMyItem();
for(MyItem cn :l )
{
cn = l.get(0);
l.remove(0);
my.add(new MyList(cn.getName(),0));
}
}
あなたは方法を使うことができます、これyourListAdapter.notifyDataSetChanged()
を見てください
編集 :
フラグメントAからデータベースにアイテムを追加するので、フラグメントB(を含むものlistView
)にlistAdapterのグローバル変数を作成し、フラグメントAのフラグメントをタグで取得してから:を呼び出す必要があります。
//when you add the fragmentB to your Activity , make sure you set a Tag for it
FragmentB f = (FragmentB) getActivity().getSupportFragmentManager()
.findFragmentByTag(TAG_FRAGMENT_B);
f.getMyListAdapter().notifyDataSetChanged();
編集2:
に、CustomListAdapter
オブジェクトのリストを更新するメソッドを追加します(my
):
public void setMyList(List myListOfObjects) {
this.my = myListOfObjects;
this.notifyDataSetChanged();
}
次に、新しいオブジェクトをデータベースに追加するときに、データベースからすべてのデータを取得してから、:を呼び出します。
f.getMyListAdapter().setMyList(newListOfObjects);//newListOFObjects contains the new data
カスタムアダプタクラスからグローバルオブジェクトを作成します。
MyListAdapter mAdapter = new MyListAdapter(getActivity(), my);
そして、listViewのアダプタを設定します。
mListView.setAdapter(mAdapter);
アダプタで「my」という名前のアレイを更新するだけです。そして、電話してください:
mAdapter.notifyDataSetChanged();
それはトリックを行います...
アダプタをlistViewに再度設定する必要があります。これにより、更新が発生します。
yourAdapter.notifyDataSetChanged();
listView.setAdapter(yourAdapter);