我正在制作一个简单的Android应用程序。
通过在列表中存储几个项目并在ListView
中显示它们,我已经完成了第一个要点。我想知道用户如何将新项目添加到列表中,我将如何坚持?
我已经看过几个关于内部存储和sql lite的教程。在这种情况下哪一个最适合我的需求?
我真的会从github上的示例应用程序中受益,这种应用程序显示了如何实现这一目标。
答案 0 :(得分:1)
你也知道:
内部存储
将私人数据存储在设备内存中。
默认情况下,保存到内部存储的文件对您的应用程序是私有的,而其他应用程序无法访问它们(用户也无法访问)。当用户卸载您的应用程序时,将删除这些文件。
当用户想要通过internal storage
/ InputStream
读取/写入大文件时,他们总是使用OutputStream
。
SQLite数据库
将结构化数据存储在私人数据库中。
请注意structured data
,您可以访问Sqlite database via name
,这样会很快。
P / s:如果您需要向列表项膨胀数据。您应该使用Sqlite
,因为它可以快速轻松地通过名称访问数据。
答案 1 :(得分:0)
这实际上取决于您希望如何使用数据。 SQLite易于在Android上使用并且运行速度很快。我在我的应用程序中将它用于相当大的数据库。
我还建议把它放在内部存储器中。这样,它就可以防止其他应用程序监视用户的数据(除非他“扎根”他的手机)。使用内部存储的一个警告是很难看到您的数据。要访问数据库,您需要在模拟器上运行Android(您将有权查看所有文件)或将数据库(通过编写一些代码来复制文件)复制到外部存储。或者只是在调试时暂时将db放在外部存储器中。
我没有任何github参考资料,但可以给你一个快速概述。子类SQLiteOpenHelper并为您的CRUD操作添加方法。
public class DbHelper extends SQLiteOpenHelper
{
private static final int DB_VERSION = 1;
@Override
public void onCreate(SQLiteDatabase db)
{
String[] ddl = {"... all the tables you need to create..."};
db.beginTransaction();
try
{
for (int i = 0, limit = ddl.length; i < limit; i++)
db.execSQL (ddl [i]);
db.setTransactionSuccessful();
}
finally
{
db.endTransaction();
}
}
@Override
public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion)
{
db.beginTransaction();
try
{
for ( ; oldVersion < newVersion; oldVersion++)
{
if (oldVersion == 1)
onUpgrade1to2 (db);
else if (oldVersion == 2)
...
}
db.setTransactionSuccessful();
}
finally
{
db.endTransaction();
}
}
public void insertItem (SQLiteDatabase db, Item item) // Item is one of your objects
{
ContentValues values = new ContentValues();
// id
values.put ("id", item.id);
values.put ("subject", item.subject);
...
db.insertOrThrow ("Items", null, values);
}
... and so on ...
}
如果您需要有关如何查询,更新和删除...
的信息,请与我们联系