我有类似的东西(非常简化的版本):
public class TransferData implements Serializable{
private Collection[] collections;
private String ID;
public TransferData( Collection[] collections){
this.ID = ID;
this.collections = collections;
}
public String getID(){
return ID;
}
public Collection[] getCollections(){
return collections;
}
}
这就是我通常抓住一个项目的方式:
//Save object in db
ContentValues values = new ContentValues();
values.put("id", td.getID());
但是,我无法理解如何从序列化类中的集合/数组中获取项目?
这没有意义:
ContentValues values = new ContentValues();
values.put("collectionitem1", td.getCollections()); ??? //need to index the array, how?
我试过这样的事情:
for (int i=0; i <= td.getCollections().length; i++) {
System.out.println(i);
}
但奇怪的是只给了我3个索引而不是我的数组中的4个索引,但它对我没有帮助。此外,我的数组包含字符串和整数,因此可能很难使用foreach样式循环进行索引。
答案 0 :(得分:0)
想出来!我知道这是关于设置错误地通过数组的事情。这是解决方案:
//Create a new map of values, where column names are the keys
ContentValues values = new ContentValues();
for (Collection collection : td.getCollections()) {
values.put("reminders", collection.getNumberOfReminders());
}
答案 1 :(得分:-1)
我看到你正在使用SQLite。在我看来,你这一切都是错的。您似乎需要使用实体类:
/**
*
* @author kkennedy
*/
@Entity(name = "TransferData")
@Table(name = "TransferData")
public class TransferData implements Serializable {
@Id
@Basic(optional = false)
@Column(name = "ID", nullable = false, length = 8)
private String ID;
@Basic(optional = false)
@Column(name = "data", nullable = false, length = 8)
private String data;
/**
* Default Constructor
*/
public TransferData() {
}
/**
* Getter
*
* @return
*/
public String getID() {
return ID;
}
/**
* Setter
*
* @param ID
*/
public void setID(String ID) {
this.ID = ID;
}
/**
* Getter
*
* @return
*/
public String getData() {
return data;
}
/**
* Setter
*
* @param data
*/
public void setData(String data) {
this.data = data;
}
}
我确信这不是你实际使用的,但是通过使用实体类,JDBC驱动程序可以完成将数据实际放入和放出数据库的所有工作。您只需将其输入到类中,然后根据需要持久化并查询数据库。
不确定这是否是最佳起点,但请点击此处了解详情:http://docs.oracle.com/javaee/5/tutorial/doc/bnbqw.html