Android 如何刷新当前activity的显示数据?
PHPz
PHPz 2017-04-17 16:21:24
0
5
603

如何我在一个界面上有两个listview,当触发某项操作,使数据库数据发生变化,两个listview里面的数据都需要更新一下,应该如何刷新呢?

PHPz
PHPz

学习是最好的投资!

全部回覆(5)
伊谢尔伦

adapter有notifyDataSetChanged()方法

大家讲道理

增加一個listener,函數的實作是執行兩個listview adapter的notifyDataSetChanged
再寫一個監聽資料庫變化的函數,收到資料庫變更時執行listener介面函數

PHPzhong

你把list加到adapter後,ListView set adapter,當資料來源list改變後,呼叫adapter的notifyDataChange方法應該就會刷新了~

Peter_Zhu

使用eventbus來做事件的分發,然後呼叫adapter的notifyDataSetChanged()方法

Ty80

「某項操作發生引起資料變化」我沒有理解錯的話,可以用觀察者模式去處理,因為他是一個操作引發另一個操作嘛,而且這樣做也比較簡單,省心。

首先註冊資料監聽:

 getContentResolver().registerContentObserver(Uri uri, boolean notifyForDescendents, ContentObserver observer) ;

ContentObserver 在改變後接受回調,你可以把更新ListView程式碼放到這裡面:

 private ContentObserver mObserver = new ContentObserver(new Handler()) {
        @Override
        public void onChange(boolean selfChange) {
             // 重新查询数据
             
             ...
             
             // 更新ListView1
             listView1.notifyDataSetChanged();
             // 更新ListView2
             listView2.notifyDataSetChanged();
        }
    }

通知ListView更新資料:

getContentResolver().notifyChange(Uri uri, null, false);

上面只是做了思路解釋,實際實現還得靠你自己,你也可以參考我的專案

PS: 感謝 @dabaooline 提醒

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板