我想实现一个ListView,该列表视图会随着对本地数据库(观察者模式)的任何更改而自动更新。我已经读到加载器和内容提供者到目前为止不能很好地与 greenDAO 配合使用,所以我想知道推荐的方法?
您可以添加自己的侦听器(观察者或属性更改侦听器),就像我在这里添加或删除某些内容时更新列表视图一样:
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);
}
以上可以在数据库控制器中完成...在我的列表视图所在的类中,我像这样截取事件:
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();
}
});
}
抱歉,目前没有实现观察者侦听器。这种情况将来可能会改变。