解析本地数据存储检索对象值为 null

Parse local data store retrieving object values as null

我正在尝试在解析本地数据存储上保存和检索一些对象数据。我的问题是说我在这种情况下保存了两个对象 LocalPrinterDetail 个对象,数据的保存和检索工作正常并且数据在我的 recyclerview 上正确显示,但是,当我退出应用程序并再次打开它时printerNamestationName 对于两个对象中的每一个都是空的,但是 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();
                }
            }
        });
    } 

保存方法

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();
    }

LocalPrinterDetail class

@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;
    }
}

尝试将您的子类声明更改为:

@ParseClassName("LocalPrinterDetail")
public class LocalPrinterDetail extends ParseObject {
    public int getPrinterId() {
        return getInt("printerId");
    }

    public void setPrinterId(int printerId) {
        put("printerId", printerId);
    }

    public String getPrinterName() {
        return getString("printerName");
    }

    public void setPrinterName(String printerName) {
        put("printerName", printerName);
    }

    public String getStationName() {
        return getString("stationName");
    }

    public void setStationName(String stationName) {
        put("stationName", stationName);
    }
}