Android 将检索对象值的本地数据存储解析为null
我正试图在parse本地数据存储上保存和检索一些对象数据。我的问题是,假设我保存了两个对象,在本例中是LocalPrinterDetail对象,数据的保存和检索工作正常,数据在我的recyclerview上正确显示,当我退出应用程序并再次打开它时,两个对象的printerName和stationName都为空,但localPrinterDetailObjects显示调试期间它的大小为2,因此在我的recyclerview上显示空白项。为什么在应用程序退出时会发生这种情况,为什么我不能缓存数据 检索方法Android 将检索对象值的本地数据存储解析为null,android,parse-platform,Android,Parse Platform,我正试图在parse本地数据存储上保存和检索一些对象数据。我的问题是,假设我保存了两个对象,在本例中是LocalPrinterDetail对象,数据的保存和检索工作正常,数据在我的recyclerview上正确显示,当我退出应用程序并再次打开它时,两个对象的printerName和stationName都为空,但localPrinterDetailObjects显示调试期间它的大小为2,因此在我的recyclerview上显示空白项。为什么在应用程序退出时会发生这种情况,为什么我不能缓存数据 检
public void retrieveLocalPrinterDetailRecords() {
ParseQuery<LocalPrinterDetail> query = ParseQuery.getQuery(LocalPrinterDetail.class);
query.fromLocalDatastore();
query.findInBackground(new FindCallback<LocalPrinterDetail>() {
@Override
public void done(List<LocalPrinterDetail> localPrinterDetailObjects, ParseException e) {
if (e == null) {
if (localPrinterDetailObjects != null && !localPrinterDetailObjects.isEmpty() && localPrinterDetailObjects.get(0) != null) {
localPrinterList.clear();
localPrinterList.addAll(localPrinterDetailObjects);
}
setupRecyclerView((RecyclerView) recyclerView);
adapter.notifyDataSetChanged();
} else {
e.printStackTrace();
}
}
});
}
LocalPrinterDetail类
@ParseClassName("LocalPrinterDetail")
public class LocalPrinterDetail extends ParseObject {
private int printerId;
private String printerName;
private String stationName;
public LocalPrinterDetail() {
}
public int getPrinterId() {
return printerId;
}
public void setPrinterId(int printerId) {
this.printerId = printerId;
}
public String getPrinterName() {
return printerName;
}
public void setPrinterName(String printerName) {
this.printerName = printerName;
}
public String getStationName() {
return stationName;
}
public void setStationName(String stationName) {
this.stationName = stationName;
}
}
尝试将子类声明更改为: @ParseClassNameLocalPrinterDetail 公共类LocalPrinterDetail扩展了ParseObject{ 公共int getPrinterId{ 返回getIntprinterId; } public void setPrinterIdint printerId{ putprinterId,printerId; } 公共字符串getPrinterName{ 返回getStringprinterName; } public void setPrinterNameString printerName{ putprinterName,printerName; } 公共字符串getStationName{ 返回getStringstationName; } public void setStationNameString stationName{ putstationName,stationName; } }
为什么有这一行LocalPrinterDetail.unpinalinbackgroundlocalprinterlist?我删除了那行代码并对其进行了测试,但仍然没有成功。当您不再需要设备上的数据时,该函数将从文档中删除所有数据。问题在于您在ParseObject子类中编写访问器方法的方式。您需要执行以下操作,而不是设置和获取属性:。我会写一个更清楚的答案。谢谢你添加这个链接。谢谢你的澄清。
@ParseClassName("LocalPrinterDetail")
public class LocalPrinterDetail extends ParseObject {
private int printerId;
private String printerName;
private String stationName;
public LocalPrinterDetail() {
}
public int getPrinterId() {
return printerId;
}
public void setPrinterId(int printerId) {
this.printerId = printerId;
}
public String getPrinterName() {
return printerName;
}
public void setPrinterName(String printerName) {
this.printerName = printerName;
}
public String getStationName() {
return stationName;
}
public void setStationName(String stationName) {
this.stationName = stationName;
}
}