2013-12-07 128 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