如何使用greenDAO实现Observer模式?

时间:2012-12-11 02:41:44

标签: android greendao

我想实现一个ListView,它会随着对本地db(Observer Pattern)的任何更改而自动更新。我已经读到加载程序和内容提供商目前不能很好地使用greenDAO,所以我想知道推荐的方法吗?

2 个答案:

答案 0 :(得分:3)

你可以添加你自己的监听器(observer或propertychangeListener),就像我在这里添加或删除东西时更新listView一样:

public static Object objj = new Object();
static PropertyChangeSupport pcs = null ;
private static PropertyChangeSupport getPropertyChangeSupport(){

    if(pcs==null){
        pcs = new PropertyChangeSupport(objj);
    }

    return pcs;

}

public void addTrace(Traces Trace){
    DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "pib", null);
    SQLiteDatabase db = helper.getReadableDatabase();
    DaoMaster daoMaster = new DaoMaster(db);
    DaoSession daoSession = daoMaster.newSession();
    TracesDao DAO1= daoSession.getTracesDao(); 
    DAO1.insert(Trace);
    getPropertyChangeSupport().firePropertyChange("addTrace", 0, Trace);

}

以上可以在数据库控制器中完成... 在我的listView所在的类中,我拦截了这样的事件:

public class ListFragment extends Fragment implements PropertyChangeListener { 
       public void propertyChange(PropertyChangeEvent evt) {
           if (evt.getPropertyName().equals("addTrace")) {
                final Traces tempTrace = (Traces) evt.getNewValue();
                listTraces = DoaConroler.ListTraces();
                showBriefingActivity.runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        createListBriefing();
                        // fillListItem(tempTrace);
                    adapterFirstLevel.notifyDataSetChanged();

                }
            });
        }

答案 1 :(得分:2)

抱歉,目前没有实施观察员听众。这可能在将来发生变化。