2016-02-19 95 views
2

我在我的android應用中使用greendao,需要刷新listview中某項的Activity。添加子實體時更新父實體(Greendao)

我有一個實體的「活動」是有一個一對多的關係,以「出口」

爲了更新「活動」時,一個新的「出口」加我爲http://greenrobot.org/greendao/documentation/relations/#Resolving_and_Updating_To-Many_Relations描述

Exports ex = new Exports(); 
ex.setActivityId(activityEntry.getId()); 
//DOING something... 
exportsDao.insert(ex); 
List<Exports> exportList = activityEntry.getExportsList(); 
exportList.add(ex); 

然而,這使我在java.util.AbstractList.add(AbstractList.java:404)的java.lang.UnsupportedOperationException

我在做什麼錯?

回答

0

從您引用的頁面開始,您已經按順序完成了這些步驟。按照該順序執行這些步驟,看看它是否解決了問題。

這是如何將是一個一對多的 關係的一部分,新的實體:

  1. 獲取到許多Java列表(這有 之前完成這個持續的新的實體,因爲我們如果我們得到了新的結果的緩存 不知道。這樣,我們知道它現在緩存)
  2. 創建一個新的實體對象(在很多方面)
  3. 設置新的外國財產實體到目標實體
  4. 使用插入
  5. 新對象添加到一對多Java列表
+0

我想正是這一點。但我仍然會遇到異常? \t列表 exportList = uploadSportActivityEntry。getExportsList(); EXP ex = new Exports(); ex.setActivityId(uploadSportActivityEntry.getId()); ex.setTimestamp(System.currentTimeMillis()); ex.setUploader(getString(R.string.garminuploadkey)); exportsDao.insert(ex); exportList.add(ex); – daniel

3

對面同樣的問題來到堅持新的對象 - 你可能有這樣固定的現在,但是這是對於任何最近用戶參考(爲4月25 2016)

缺陷修復最近(今年年初)固定如下所示

https://github.com/greenrobot/greenDAO/issues/287 https://github.com/greenrobot/greenDAO/pull/288

從上面的情況來看,如果任何人有同樣的問題,這個問題是最有可能的下

  1. 一個你沒有最新的greendao依賴版本(之前的最近的一項是修復)
  2. 或者你和我一樣,拉着從GitHub的greendao項目和盲目複製從README文件中的gradle這個依賴版本 - 它看起來像下面

    compile 'de.greenrobot:greendao:2.1.0' 
    

    看起來不同於官方網站上的gradle依賴。

    compile 'org.greenrobot:greendao:2.2.0'