gpt4 book ai didi

android - 如何用greenDAO实现观察者模式?

转载 作者:行者123 更新时间:2023-11-29 15:25:25 25 4
gpt4 key购买 nike

我想实现一个 ListView,它会随着对本地数据库(观察者模式)的任何更改而自动更新。我读到 Loaders 和 ContentProviders 目前不能很好地与 greenDAO 配合使用,所以我想知道推荐的方法?

最佳答案

您可以添加自己的监听器(观察者或 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);

}

以上可以在数据库 Controller 中完成...在我的 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();

}
});
}

关于android - 如何用greenDAO实现观察者模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13812811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com