Reputation: 2253
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
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