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

Android 将检索对象值的本地数据存储解析为null,android,parse-platform,Android,Parse Platform,我正试图在parse本地数据存储上保存和检索一些对象数据。我的问题是,假设我保存了两个对象,在本例中是LocalPrinterDetail对象,数据的保存和检索工作正常,数据在我的recyclerview上正确显示,当我退出应用程序并再次打开它时,两个对象的printerName和stationName都为空,但localPrinterDetailObjects显示调试期间它的大小为2,因此在我的recyclerview上显示空白项。为什么在应用程序退出时会发生这种情况,为什么我不能缓存数据 检

我正试图在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;
    }
}