解析本地数据存储,将对象值检索为空

问题描述 投票:0回答:1

我正在尝试在解析本地数据存储上保存和检索一些对象数据。我的问题是,在这种情况下,我已经保存了两个对象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();
    }
android parse-platform
1个回答
0
投票

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

@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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.