BekaKK
BekaKK

Reputation: 2253

How to sort the RealmResults with recent dates?

I have around 200 rows in RealmResults and need to sort the list with recent dates and also I need to select last 20 elements and then every 20 element

 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 = "";

}

Here is a my query.Without between ,I can get all items,but I also want to use between How I can rewrite my code to select last 20 elements and in a second call my function, another 20+20 elements Thanks

Upvotes: 0

Views: 221

Answers (1)

Christian Melchior
Christian Melchior

Reputation: 20126

RealmResults are lazy-loaded, so you load what you actually access, so List.subList should give you what you want:

// 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

}

Upvotes: 0

Related Questions