做的一个软件,开始用的文本存的,不过后来不好修改。
于是把数据放在了string.xml里面了,现在发现实现难度很大。。
所以现在想用数据库,但又没有接触过数据库,明天就要交了,急啊。。
后来听sharedpreference可以存数据,我不想改太多,直接用以前的string.xml。。现在的问题是有不有方法可以使sharedpreference保存数组
怎么保存,修改,读取,请高手指教!(给点简单例子就是了)
于是把数据放在了string.xml里面了,现在发现实现难度很大。。
所以现在想用数据库,但又没有接触过数据库,明天就要交了,急啊。。
后来听sharedpreference可以存数据,我不想改太多,直接用以前的string.xml。。现在的问题是有不有方法可以使sharedpreference保存数组
怎么保存,修改,读取,请高手指教!(给点简单例子就是了)
解决方案 »
- APK覆盖安装,怎样判断是第一次安装?(andorid)
- 添加常用查询功能
- 关于数据库的问题 求助
- 求助:添加 jobox2d后无法找到自己定义的MySurfaceView类
- android 运行项目报错
- 【求助】本人手贱,请高人指点
- 怎样让程序只运行一个实例...........................................
- android线程 网络 相关的问题
- 求助大佬们,android studio创建一个项目出错handshake_failure
- Android内嵌Unity MainActivity跳转至UnityActivity再finish会crash的错误
- 怎么把几个应用放在mainmenu的规定位置?
- so库如何调试
SharedPreferences.getStringSet(String key, Set<String> defValues)
SharedPreferences.Editor.putStringSet(String key, Set<String> values)
Since: API Level 11Set a set of String values in the preferences editor, to be written back once commit() is called.
Parameters
key The name of the preference to modify.
values The new values for the preference.
Returns * Returns a reference to the same Editor object, so you can chain put calls together.
楼主不妨试试将你的数组转换为set
一下版本就有点悲催了
如果你的数组数据量不是太多的话了以试试一个个存
下面的代码时保存的:SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME,
MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("flag1", data1);
editor.putInt("flag2", data2);
editor.putInt("flag3", data3);
editor.putBoolean("flag4", data4);
editor.commit();读取:SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME,
MODE_PRIVATE);
data1= preferences.getBoolean("flag1", false);
data2= preferences.getInt("flag2", 1);
data3= preferences.getInt("flag3", 1);
data4= preferences.getBoolean("flag4", false);
如果数据量大的话就要用的数据库了。
给个数据库操作的demo给你吧,
创建数据库:package com.test.video;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;public class DBHelper extends SQLiteOpenHelper
{ public static final String TB_NAME = "movie_info";//数据库的表名
public static final String ID = "_id";//id
public static final String FILENAME = "filename";// 字段
public static final String BREAKPOINT = "breakpoint";
public DBHelper(Context context, String name, CursorFactory factory, int version)
{
super(context, name, factory, version);
// TODO Auto-generated constructor stub
} @Override
public void onCreate(SQLiteDatabase db)
{
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE IF NOT EXISTS " + TB_NAME + " ("
+ ID + " INTEGER PRIMARY KEY,"
+ FILENAME + " TEXT,"
+ BREAKPOINT + " INTEGER)"
);// 创建数据库,定义各字段类型
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS "+TB_NAME);
onCreate(db);
}}下面是对数据库的查询操作:private SQLiteDatabase db;
private DBHelper dbHelper;
public static final String DB_NAME = "movieinfo.db";
public static final int VERSION = 1;dbHelper = new DBHelper(context, DB_NAME, null, VERSION);
db = dbHelper.getWritableDatabase();String path = path.replace("'", "''");
StringBuilder where = new StringBuilder();
where.append(DBHelper.FILENAME + "=" + "'" + path + "'");
String whereclause = where.toString();
if (db != null && db.isOpen()) {
Cursor c = db.query(DBHelper.TB_NAME,
new String[] { DBHelper.BREAKPOINT }, whereclause,null,null, null, null);
}
其他类型的操作比如:增、删、改你可以网上搜索一下相关的语法就好了。
祝你好运!