我正在尝试在解析本地数据存储上保存和检索一些对象数据。我的问题是,在这种情况下,我已经保存了两个对象LocalPrinterDetail
,数据的保存和检索工作正常,并且数据可以在recyclerview上正确显示,但是,当我退出应用程序并再次打开它时,[对于两个对象中的每一个,C0]和printerName
为空,但是stationName
显示在调试期间它的大小为2,因此在我的recyclerview中显示了空白项目。为什么在应用退出时会发生这种情况,为什么我不能缓存数据?
检索方法
localPrinterDetailObjects
保存方法
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类
public void saveLocalPrinterDetailRecord(String printerStationName) {
LocalPrinterDetail localPrinterDetail = new LocalPrinterDetail();
localPrinterDetail.setStationName(printerStationName);
localPrinterDetail.setPrinterName(printerModelName);
localPrinterDetail.put("station_name", localPrinterDetail.getStationName());
localPrinterDetail.put("printer_name", localPrinterDetail.getPrinterName());
localPrinterDetail.pinInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Toast.makeText(context, "Local Printer Saved", Toast.LENGTH_LONG).show();
} else {
e.printStackTrace();
}
}
});
localPrinterDetail.saveEventually();
}
尝试将您的子类声明更改为:
@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;
}
}