我有一个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所示。因为我懒惰而将图像从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.
如果我使用SharedPreferences(使用gson)或Files保存onPause()或onStop()。
为RowIem类重写readObject和writeObject的方法。但它仍然继续发出上述错误。
现在我没有选择了。我现在认为在SQLite数据库中保存ArrayList可能是可行的,但我不知道如何将这个列表保存到SQLite数据库中,因为我不知道SQLite,一眼就看起来很复杂。请帮帮我。
答案 0 :(得分: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();
}
}