我正在研究Android的成就系统,我只想找到一种简单的方法来存储所有成就和每个成就。 我需要存储:ID,标题,描述,点数,当前值,最大值和每个成就的图像路径。
我尝试使用SQLite服务和所有东西,但我似乎无法正常工作,所以我只想暂时使用一些基本的文本表。我知道你使用FileBuffer,我知道如何写入文本文件,我只是不确定格式化它们的最佳方法以及如何阅读它们。
我正在考虑将表格格式化为:
{
{
id = 0,
Title = "Sample Achievement",
Desc = "Sample description",
Points = 5,
CurVal = 3,
MaxVal = 10,
Img = "path/to/img.jpg",
}
{
id = 1;
...
这样我就可以将每个成就作为自己的子表格访问,或类似的东西,我可以围绕我后来使用的值构建一个Achievement对象。
答案 0 :(得分:0)
您可以开始创建如下数据库。
private static String db_path = "/data/data/com.yourproject/databases/mysqlitedb";
private SQLiteDatabase sqliteDatabase = null;
public SQLiteDatabase getSQLiteDatabase() {
try {
sqliteDatabase = SQLiteDatabase.openDatabase(db_path, null,
SQLiteDatabase.OPEN_READWRITE);
sqliteDatabase.setVersion(1);
sqliteDatabase.setLocale(Locale.getDefault());
sqliteDatabase.setLockingEnabled(true);
return sqliteDatabase;
} catch (Exception e) {
e.getMessage();
return null;
}
}
之后你可以像下面那样创建你的表。
public void createTable() {
try {
if (sqliteDatabase != null) {
sqliteDatabase.execSQL("CREATE TABLE IF NOT EXISTS "
+ "Achievement" + " (_id INTEGER PRIMARY KEY, Title TEXT, Desc TEXT,"
+ " Points NUMERIC," + " CurVal NUMERIC, MaxVal NUMERIC, "
+ " Img TEXT);");
}
} catch (Exception e) {
e.getMessage();
}
}
您可以将数据插入表格,如下所示。
public int insert(String table, Hashtable<String, String> FieldsAndValues) {
// TODO Auto-generated method stub
int count=1;
try {
if (sqliteDatabase == null) {
sqliteDatabase = getSQLiteDatabase();
}
Enumeration e = FieldsAndValues.elements();
ContentValues initialValues = new ContentValues();
for (e = FieldsAndValues.keys(); e.hasMoreElements();) {
String key = (String) e.nextElement();
String value = (String) FieldsAndValues.get(key);
initialValues.put(key, value);
}
sqliteDatabase.insert(table, null, initialValues);
return count;
} catch (Exception e) {
e.getMessage();
return -1;
}
}
请记住,所有这三种方法都应该属于一个类。
如果你能够管理创建数据库和你的表(通过在初始活动中调用这些方法),插入数据将是小菜一碟,会对你有帮助。