2

DialogFragmentアイテムをデータベーステーブルに追加する場所があります。

そして、私は別Fragmentのものを持っています、それはListView私がデータベースからのすべてのアイテムを表示しているところを持っています。ListViewアイテムをデータベースに追加することはできますが、データベースからアイテムをフェッチしているにすぐには表示されません。

4

4 に答える 4

0

のグローバル変数を作成します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));
    }

}
于 2012-07-17T14:02:33.463 に答える
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 
于 2012-07-17T14:02:38.493 に答える
0

カスタムアダプタクラスからグローバルオブジェクトを作成します。

MyListAdapter mAdapter = new MyListAdapter(getActivity(), my);

そして、listViewのアダプタを設定します。

mListView.setAdapter(mAdapter);

アダプタで「my」という名前のアレイを更新するだけです。そして、電話してください:

 mAdapter.notifyDataSetChanged();

それはトリックを行います...

于 2012-07-17T14:23:35.513 に答える
0

アダプタをlistViewに再度設定する必要があります。これにより、更新が発生します。

yourAdapter.notifyDataSetChanged();
listView.setAdapter(yourAdapter);
于 2016-02-02T15:17:40.213 に答える