如何使用 Sugar ORM 实现 notifyDatasetChange

How to implement the notifyDatasetChange with Sugar ORM

我一直想知道您的模型如何定义使用 sugar ORM 的数据集更改通知,例如 android 内容提供程序。 我有这样一种情况,我在一个 activity 中更新了一个模型记录并移动到前一个 activity,但是当我移动到前一个 activity 时数据没有重新加载。 不知道模型如何知道数据发生变化(更新)并自动重新加载。

您实际上谈论的是像 SugarOrm 这样的 ORM 上的 SyncAdapter 实现,据我所知,我不确定 sugar 是否有这样的实现。您将必须执行自定义实现才能实现此类功能。以下是一些可能对您有用的方法。

  1. 您可以在 activities/fragments 的 onResume 方法中加载 data/models。在这里,我们可以保证您拥有数据库中数据的最新快照,即使您从不同的 activity 返回,它也应该已经更新。
    1. 您可以像这样为您的活动实施静态广播接收器

public class MyModel 扩展 SugarRecord 实现 Serializable{

int m_id;
String m_name;

public MyModel(){}

public void setter(...){...}
public Object getter(){...}

}

Activity 1 inside onCreate(...)

BroadcastReceiver dataBroadcast = new BroadcastReceiver{

public void onReceive(Context context, Intent intent){
    //retrieve the data model here from the intent or setdata for your adapter by loading all the data from the database
    MyModel model = intent.getSerializableExtra("MYDATA");
}

};

registerBroadCast(dataBroadcast, new IntentFilter("DATA_CHANGED"));

在 Destroy() 中 unregisterReceiver(dataBroadcast);

Activity 2 在你的 update/create 模型方法中,例如

void createMyModel(){
    MyModel m = new MyModel();
    m.setMname("ice");
    long saveId = m.save();
    if(saveId > 0){
//fire the broadcast which activity 1 will receive and process accrodingly
        Intent mIntent = new Intent("DATA_CHANGED");
        mIntent.putSerializable("MYDATA", m);       
        sendBroadcast(mIntent)  
    }
}