【问题标题】:How to sort the RealmResults with recent dates?如何使用最近的日期对 RealmResults 进行排序?
【发布时间】:2018-01-07 15:37:45
【问题描述】:

我在 RealmResults 中有大约 200 行,需要使用最近的日期对列表进行排序,还需要选择最后 20 个元素,然后选择每 20 个元素

 RealmResults<Transactions> transactions
                    = realm.where(Transactions.class)
                    .sort("date",Sort.DESCENDING).between(
                            "id", start, start + limit).
                    findAll();




public class Transactions extends RealmObject implements Serializable {
@PrimaryKey
private long id;

public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;
}

private String amount = "";

public String getTransactionStatus() {
    return transactionStatus;
}

public void setTransactionStatus(String transactionStatus) {
    this.transactionStatus = transactionStatus;
}



// 1 complete,0 pay with cash,2 fail status
private String transactionStatus = "";


private String signature = "";

public String getSignature() {
    return signature;
}

public void setSignature(String signature) {
    this.signature = signature;
}

private String dateTime = "";

public String getDateTime() {
    return dateTime;
}

public void setDateTime(String dateTime) {
    this.dateTime = dateTime;
}

private String paymentType = "";

public String getPaymentType() {
    return paymentType;
}

public void setPaymentType(String paymentType) {
    this.paymentType = paymentType;
}

public String getAmount() {
    return amount;
}

public void setAmount(String amount) {
    this.amount = amount;
}


public String getLogo() {
    return logo;
}

public void setLogo(String logo) {
    this.logo = logo;
}

public String getCompanyId() {
    return companyId;
}

public void setCompanyId(String companyId) {
    this.companyId = companyId;
}

public String getCompany() {
    return company;
}

public void setCompany(String company) {
    this.company = company;
}

public String getCompanyIdentification() {
    return companyIdentification;
}

public void setCompanyIdentification(String companyIdentification) {
    this.companyIdentification = companyIdentification;
}

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}

public String getSerialNumber() {
    return serialNumber;
}

public void setSerialNumber(String serialNumber) {
    this.serialNumber = serialNumber;
}

public String getTerminalId() {
    return terminalId;
}

public void setTerminalId(String terminalId) {
    this.terminalId = terminalId;
}

public String getPsamModel() {
    return psamModel;
}

public void setPsamModel(String psamModel) {
    this.psamModel = psamModel;
}

public String getAdditionalText() {
    return additionalText;
}

public void setAdditionalText(String additionalText) {
    this.additionalText = additionalText;
}


private String logo = "";

private String companyId = "";

private String company = "";

private String companyIdentification = "";

private String address = "";

private String serialNumber = "";

private String terminalId = "";


private String psamModel = "";

private String additionalText = "";

}

这是我的查询。没有 between ,我可以获得所有项目,但我也想使用 between 我如何重写我的代码以选择最后 20 个元素并在第二次调用我的函数中,另外 20+20 个元素 谢谢

【问题讨论】:

    标签: android sql realm realm-list


    【解决方案1】:

    RealmResults 是延迟加载的,所以你加载你实际访问的内容,所以List.subList 应该给你你想要的:

    // Page through the results. Use Sort.ASCENDING if you want the reverse.
    RealmResults<Transaction> results = getTransactions();
    int pageSize = 20;
    int start = 0;
    int end = pageSize;
    int size = results.size();
    while (start < size - 1) {
      end = Math.min(end, size);
      List<Transaction> page = results.subList(start, end);
      handlePage(page);
      start += page;
      end += page
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多