2013-12-07 169 views
0

保存自定義對象的ArrayList我有RowItem的ArrayList,其中RowItem類有以下變量:在內部存儲

public class RowItem 
{ 
    private Bitmap photo; 
    private String photoURL ; 
    private int online_status; 
    private String name; 
    private String last_seen; 
    private int delete; 
    //Getters and Setters ... 
} 

我想保存此ArrayList到內部存儲。這裏的事情,我已經嘗試過,但不工作的清單:

here表示
  1. 實施排除策略。從緩存中排除位圖,因爲我很懶請將圖像從URL加載到ListView。但我仍然得到這樣的錯誤:

    java.lang.RuntimeException: Unable to pause activity {com.awesome.clique/com.awesome.clique.Home}: java.lang.IllegalArgumentException: class android.text.BoringLayout declares multiple JSON fields named mPaint. 
    

    如果我在的onPause()或的onStop(使用SharedPreferences(使用GSON)或文件保存)。

  2. RowIem類的readObject和writeObject的重寫方法。但它仍然繼續給出上述錯誤。

現在我現在沒有選擇了。我現在認爲在SQLite數據庫中保存ArrayList可能是可行的,但我不知道如何將這個列表保存到SQLite數據庫中,因爲我不知道SQLite,並且一目瞭然看起來非常複雜。請幫助我。

回答

1

我建議你看看ORMLite,它會簡化你如何使用SQLite。

看看我是如何實現一個簡單的模型在這裏:https://github.com/slidese/BabyFeed/blob/master/src/se/slide/babyfeed/model/FeedLog.java

而且有你和它是如何工作的,它非常簡單一看(在同一項目)。

您的代碼將是這個樣子:

@DatabaseTable 
public class RowItem 
{ 
    @DatabaseField(generatedId = true) 
    private int id; 

    @DatabaseField 
    private Bitmap photo; 

    @DatabaseField 
    private String photoURL; 

    @DatabaseField 
    private int online_status; 

    @DatabaseField 
    private String name; 

    @DatabaseField 
    private String last_seen; 

    @DatabaseField 
    private int delete; 

    //Getters and Setters ... 
} 

然後:

DatabaseManager.getInstance().addRowItem(row); 

創建這些輔助方法,例如刪除看起來是這樣的:

public void deleteRowItem(RowItem row) { 
    try { 
     getHelper().getRowDao().delete(row); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
} 
+0

你能告訴我,我將如何刪除一個特定的行? – SlashGeek

+0

這裏粘貼的代碼太多了。但是你可以看看我在DatabaseManager和DatabaseHelper類中如何使用它:https://github.com/slidese/BabyFeed/blob/master/src/se/slide/babyfeed/db/DatabaseManager.java – Mike

+0

在你的代碼中有一個添加FeedLogs的功能,但是我有點困惑,我將如何刪除特定的FeedLog或RowItem?如果你只能粘貼刪除功能,這將是非常有用的。 – SlashGeek