2016-06-25 5 views
1

Wir verwenden RealChangeListener, um Datenänderungen zu überwachen und Listenansicht zu aktualisieren, indem wir notifydatasetgchanged() aufrufen.Aufruf von Listview notifydatasetchanged() in Realmchangelistener ist gut zu tun?

Erste Sync-Zeit, wir bekommen viele Datensätze vom Server (pro Batch 100 Datensätze), Schleife durch Ergebnisse Aktualisierung Realm wie unten im Hintergrund Thread.

for(int i=0;i<results.size();i++) 
{ 
    // processing and validation 
    .... 
    db.beginTransaction(); 
    db.copyToRealm(processedObject); 
    db.commitTransaction(); 
} 

In Tätigkeit sind wir registriert realmResults Hörer wie unten Code ändern

@Override 
public void onStart() { 
    super.onStart(); 

    mEntityDataProvider = new EntityDataProvider(); 
    mEntityDataProvider = mEntityDataProvider.getListAsync();  
    mEntityDataProvider.addChangeListener(realmEntityChangeListener); 

} 

private RealmChangeListener<RealmResults<Entity>> realmEntityChangeListener = new RealmChangeListener<RealmResults<Entity>>() { 
    @Override 
    public void onChange(RealmResults<Entity> realmResults) { 
     if (mEntityListAdapter!= null) { 
      mEntityListAdapter.setData(realmResults); 
      mEntityListAdapter.notifyDataSetChanged(); 
     } 
    } 
}; 

Fragen:

  1. ist es am besten Praxis notifyDataSetChanged() in
    reamlChangeListner anrufen?
  2. Für jede CommitTransaction() Ich denke, RealmChangeListener wird aufgerufen werden, Aufruf von notifyDataSetChanged() Aufruf oft ist es in Ordnung?
  3. Wenn über die Praxis ist nicht gut zu tun, schlagen Sie mir vor, wenn Alternativen, die ich berücksichtigen muss.

Dank

Antwort

1
  1. Ja
  2. denke ich die Schleife zwischen beginTransaction()/commitTransaction() die UI zu oft zu vermeiden Refresh setzen.
  3. Siehe https://realm.io/docs/java/latest/#adapters, Sie können nur die Adapter von Realm verwenden. Und in der mEntityListAdapter.setData(realmResults); scheint nicht notwendig jedes Mal aufgerufen zu werden, wenn es auf der gleichen RealmResults ist.
Verwandte Themen