数据库更改后更新UI的方法

午夜

我正在使用第一种方法开发基于Google IO演示架构的应用基本上我有一个ServiceContentProvider通过支持SQLiteDB,我也用Loader秒。

当数据库发生更改时,我需要一种更新UI的方法。例如,用户可能想将商品添加到他的购物篮中。将项目ID插入购物篮表后,我想更新UI。我应该使用哪种方法?ContentObserver到目前为止,我所看到的信息很少这是要走的路吗?

大卫·科萨里尼(David Corsalini)

query你的方法ContentProvider附加一个侦听返回光标:

 Cursor cursor = queryBuilder.query(dbConnection, projection, selection, selectionArgs, null, null, sortOrder);
 cursor.setNotificationUri(getContext().getContentResolver(), uri);

然后在你的insert/ update/delete方法使用这样的代码:

 final long objectId = dbConnection.insertOrThrow(ObjectTable.TABLE_NAME, null, values);
 final Uri newObjectUri = ContentUris.withAppendedId(OBJECT_CONTENT_URI, objectId );
 getContext().getContentResolver().notifyChange(newObjectUri , null);

CursorLoader将收到通知,并且OnLoadFinished(Loader, Cursor)将再次被呼叫。

如果您不使用Loader,那么ContentObserver方法是走,用几行代码通知您数据库更改(但您需要手动重新查询)。

  private ContentObserver objectObserver = new ContentObserver(new Handler()) {
    @Override
    public void onChange(boolean selfChange) {
        super.onChange(selfChange);
        restartObjectLoader();
    }
};

请记住致电onResume()

 getContentResolver().registerContentObserver(ObjectProvider.OBJECT_CONTENT_URI, false, objectObserver);

并在onPause()

 getContentResolver().unregisterContentObserver(objectObserver);

更新:UI更改这是一个较大的主题,因为它取决于Adapter您用来填充ListView或的RecyclerView

CursorAdapter输入onLoadFinished(Loader loader, Cursor data)

 mAdapter.swapCursor(data);

ArrayAdapter输入onLoadFinished(Loader loader, Cursor data)

 Object[] objects = transformCursorToArray(data); //you need to write this method
 mAdapter.setObjects(objects); //You need to wrie this method in your implementation on the adapter
 mAdapter.notifyDataSetChange();

RecyclerView.Adapter输入onLoadFinished(Loader loader, Cursor data)

 Object[] objects = transformCursorToArray(data); //you need to write this method
 //Here you have more mAdapter.notify....()

从此处阅读有关通知的其他方法RecyclerView.Adapter

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

发生数据库更改后更新 Ui

来自分类Dev

Android:修改数据库后无法更新UI

来自分类Dev

更改模型类后删除和更新数据库?

来自分类Dev

数据库更改时,UI不更新

来自分类Dev

关于数据库更改的 Angular UI 更新

来自分类Dev

在数据库更新后立即更新UI的最佳方法是什么(ASP.NET&JQuery)

来自分类Dev

在数据库更新后立即更新UI的最佳方法是什么(ASP.NET&JQuery)

来自分类Dev

WPF,将数据添加到数据库后如何更新/刷新UI

来自分类Dev

在 sqlite 数据库中发生更改后更新 WPF 数据网格

来自分类Dev

拖放操作后更新数据库

来自分类Dev

交易后如何更新数据库?

来自分类Dev

更新ObjectDataSource中的数据库更改

来自分类Dev

如何在服务中从数据库返回的对象中承诺后更新 UI

来自分类Dev

保存更改后属性未更新(首先是EF数据库)

来自分类Dev

更新数据库后如何将更改传播到Analysis Services

来自分类Dev

将默认数据库路径更改为组路径后,iOS RealmSwift 不会更新模型

来自分类Dev

更新数据库更新后显示的数据

来自分类Dev

更改型号后如何更改数据库?

来自分类Dev

状态更改后更新Fragment UI的方法

来自分类Dev

数据库更新后更新片段TextView

来自分类Dev

更新数据库后如何更新ListView?

来自分类Dev

更新结果集后更新数据库

来自分类Dev

更新后返回更新的对象数据库,而不是数

来自分类Dev

无法更新后数据库更新当前时间戳

来自分类Dev

插入数据库Web服务后更新数据

来自分类Dev

从数据库检索数据后,Angular View不更新

来自分类Dev

Android-在数据库更新后保留数据

来自分类Dev

Laravel:编辑数据后更新数据库时出错

来自分类Dev

数据库更新的通用方法

Related 相关文章

热门标签

归档