2011-10-19 13 views
6

私のアプリでは、ExpandableListViewで作業しています。私はBaseExpandableListAdapterを拡張するアダプタを使用しています。私はExpandableListViewをリフレッシュしたいです。android notifyDataSetChanged ExpandableListViewが動作しない

私のExpandableListViewは、データベースとリンクする削除ボタン付きの項目で構成されています。 削除ボタンを押すと、そのアイテムはdbから完全に削除されます。しかし、listviewは同時にリフレッシュされません。私が再びその活動を爽やかにしているが、同時にではない。 私は使用しています

mAdapter.notifyDataSetChanged(); 

しかし、私が望むように動作しません。 なぜですか?

+0

を訪問する私達にあなたのアダプタのコードを表示? –

+0

あなたは 'Cursor'も再質問しましたか? –

+0

私はアイテムを削除しただけです。そのカーソルは不要です。だから私はそれを使用していない – Jyosna

答えて

4

さらに、リフレッシュ時にExpandableListViewでinvalidateViews()を呼び出すこともできます。

+0

私はそれを書くだろうか? bcz私は削除ボタンをクリックしてリフレッシュする必要がありますhappendする必要があります。 – Jyosna

+0

あなたのExpandableListViewの内容が変更されたとき。したがって、たとえば – senola

+0

のようなエントリを削除した後、invalidateViews()が利用できない場合 – Jyosna

8

次のように、BaseExpandableListAdapterのオーバーライドされたメソッドに対してsuperを呼び出しただけです。それ以降、notifyDataSetChanged()が機能します。

@Override 
    public void registerDataSetObserver(DataSetObserver observer) { 
     super.registerDataSetObserver(observer);  
    } 
+0

ExpandableListAdapterがどのようにインターフェイスであるかわかりません。 –

+0

私はそれが少し遅いと思っていますが、実際に私はクラスを使用しました:リストアダプタとしてBaseExpandableListAdapter .. – Cata

+0

ああ、答えを更新していただきありがとうございます。 –

0

()

「ビューツリーの観察者がでグローバル変更を通知することができリスナーを登録するために使用されているあなたは、全体のviewtreeが描かれるまで待たなければならないと、あなたはnotifyDataSetChangedを呼び出すことができますそのようなグローバルイベントには、ツリー全体のレイアウト、描画パスの開始、タッチモードの変更などが含まれますが、これらに限定されません。ViewTreeObserverは、ビュー階層によって提供されるため、アプリケーションによって決してインスタンス化されてはなりません。詳細は、getViewTreeObserver()を参照してください。

http://developer.android.com/reference/android/view/ViewTreeObserver.html

final View v = convertView; 
     ViewTreeObserver vto = convertView.getViewTreeObserver(); 
     vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
      public void onGlobalLayout() { 
       v.getViewTreeObserver().removeOnGlobalLayoutListener(this); 

       notifyDataSetChanged();  
}}); 
0

あなたはビッグオタクランチの拡張可能なリストを使用している場合は、RecyclerView.adapterの伝統的なnotifyDataSetChanged()が動作していないことに注意してください。

代わりに、拡張可能なRecyclerViewは、ParentListItemのリストの変更をアダプタに通知する機能を備えた通知メソッドのセットを提供します。追加の詳細については

// Parent Changes 
notifyParentItemInserted(int parentPosition) 
notifyParentItemRemoved(int parentPosition) 
notifyParentItemChanged(int parentPosition) 
notifyParentItemRangeInserted(int parentPositionStart, int itemCount) 

// Child Changes 
notifyChildItemInserted(int parentPosition, int childPosition) 
notifyChildItemRemoved(int parentPosition, int childPosition) 
notifyChildItemChanged(int parentPosition, int childPosition) 

https://bignerdranch.github.io/expandable-recycler-view/

関連する問題