Java Android共享首选项TinyDB putListObject frunction
我试图使用TinyDB的Java Android共享首选项TinyDB putListObject frunction,java,android,Java,Android,我试图使用TinyDB的putListObject函数将对象列表保存到共享首选项,但是我得到了一个错误的第二个参数类型错误。我可以很好地使用putObject函数,只有在使用putListObject函数时才会出现错误 球员级别: public class Player { private String name = ""; private int score = 0; public Player(String name, int score) {
putListObject
函数将对象列表保存到共享首选项,但是我得到了一个错误的第二个参数类型
错误。我可以很好地使用putObject
函数,只有在使用putListObject
函数时才会出现错误
球员级别:
public class Player {
private String name = "";
private int score = 0;
public Player(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
putListObject函数:
public void putListObject(String key, ArrayList<Object> objArray){
checkForNullKey(key);
Gson gson = new Gson();
ArrayList<String> objStrings = new ArrayList<String>();
for(Object obj : objArray){
objStrings.add(gson.toJson(obj));
}
putListString(key, objStrings);
}
ArrayList<Player> playerList = new ArrayList<Player>();
TinyDB tinydb = new TinyDB(this);
tinydb.putListObject("players", playerList);
public void putListObject(字符串键,ArrayList objArray){
checkForNullKey(key);
Gson Gson=新的Gson();
ArrayList objStrings=新的ArrayList();
用于(对象obj:objArray){
add(gson.toJson(obj));
}
putListString(键、对象字符串);
}
我如何使用该功能:
public void putListObject(String key, ArrayList<Object> objArray){
checkForNullKey(key);
Gson gson = new Gson();
ArrayList<String> objStrings = new ArrayList<String>();
for(Object obj : objArray){
objStrings.add(gson.toJson(obj));
}
putListString(key, objStrings);
}
ArrayList<Player> playerList = new ArrayList<Player>();
TinyDB tinydb = new TinyDB(this);
tinydb.putListObject("players", playerList);
ArrayList playerList=new ArrayList();
TinyDB TinyDB=新的TinyDB(本);
tinydb.putListObject(“玩家”,玩家列表);
我得到的错误是:
TinyDB中的putListObject(字符串java.util.ArrayList)
无法应用于(字符串)
(java.util.ArrayList)
非常感谢您的帮助 尽管
Player
的任何实例都是对象
,但Player的ArrayList
与对象的ArrayList
并不相同。将方法签名更改为:
putListObject(String key, ArrayList<Player> objArray)
TinyDB的kcochibili开发者在github上回答了这个问题。 他说,在触发putListObject之前,必须将自定义对象强制转换为object 用于放置自定义对象ArrayList的示例:
ArrayList<Player> players = new ArrayList<Player>();
ArrayList<Object> playerObjects = new ArrayList<Object>();
for(Player a : players){
playerObjects.add((Object)a);
}
TinyDB tinydb = new TinyDB(this);
tinydb.putListObject("players", playerObjects);
arraylistplayers=newarraylist();
ArrayList playerObjects=新的ArrayList();
对于(玩家a:玩家){
添加((对象)a);
}
TinyDB TinyDB=新的TinyDB(本);
tinydb.putListObject(“玩家”,玩家对象);
另外,当您想从DB中获取值时,它会给出ArrayList