以块(小部分)的形式从 Backendless 加载数据
load data from Backendless in chunks (small parts)
我正在尝试找出我的问题的答案,我正在从
backendless 异步。
代码:
BackendlessDataQuery dataQuery = new BackendlessDataQuery();
dataQuery.setPageSize(10); // here am setting the page size (10 items to load at a single fetch )
dataQuery.setWhereClause(whereClause);
Backendless.Data.of(Note.class).find(dataQuery, new AsyncCallback<BackendlessCollection<Note>>() {
@Override
public void handleResponse(BackendlessCollection<Note> notes) {
//here i got the first 10 objects from Note Table
}
@Override
public void handleFault(BackendlessFault fault) {
swipeToReload.setRefreshing(false);
Toast.makeText(getContext(), "" + fault.getMessage(), Toast.LENGTH_LONG).show();
}
});
所以现在我想知道如何分块加载数据,Button
作为 RecylerView
的页脚(这里填充我获取的数据)但我不知道如何我会那样做,我在脑海中想象的是 "U have to fetch the data by telling server. The index of desired data like on first request fetch the data from 1 to 10 on next request fetch the data from 11-20 and so on."
但是,如果我们从 21-30 请求数据(它的第 3 个请求)并且创建了一些新数据(在第一个索引中),那么我们将如何加载这些数据呢?我们必须从一开始就加载所有内容吗??请指正。
成功了:
public class MyForm {
final DataHandler dataHandler;
BackendlessCollection<Note> data;
MyForm() {
dataHandler = new DataHandler(this);
}
void setData(BackendlessCollection<Note> data) {
this.data = data;
//render new set of data
}
//'Fetch Data' Button click handler
public void fetchData() {
BackendlessDataQuery dataQuery = new BackendlessDataQuery();
dataQuery.setPageSize(10);
Backendless.Data.of(Note.class).find(dataQuery, dataHandler);
}
//'Next Page' Button click handler
public void fetchNext() {
data.nextPage(dataHandler);
}
void setError(BackendlessFault fault) {
//swipeToReload.setRefreshing(false);
//Toast.makeText(getContext(), "" + fault.getMessage(), Toast.LENGTH_LONG).show();
}
class DataHandler implements AsyncCallback<BackendlessCollection<Note>> {
final MyForm form;
DataHandler(MyForm form) {
this.form = form;
}
public void handleResponse(BackendlessCollection<Note> notes) {
form.setData(notes);
}
public void handleFault(BackendlessFault fault) {
form.setError(fault);
}
}
}
我正在尝试找出我的问题的答案,我正在从 backendless 异步。
代码:
BackendlessDataQuery dataQuery = new BackendlessDataQuery();
dataQuery.setPageSize(10); // here am setting the page size (10 items to load at a single fetch )
dataQuery.setWhereClause(whereClause);
Backendless.Data.of(Note.class).find(dataQuery, new AsyncCallback<BackendlessCollection<Note>>() {
@Override
public void handleResponse(BackendlessCollection<Note> notes) {
//here i got the first 10 objects from Note Table
}
@Override
public void handleFault(BackendlessFault fault) {
swipeToReload.setRefreshing(false);
Toast.makeText(getContext(), "" + fault.getMessage(), Toast.LENGTH_LONG).show();
}
});
所以现在我想知道如何分块加载数据,Button
作为 RecylerView
的页脚(这里填充我获取的数据)但我不知道如何我会那样做,我在脑海中想象的是 "U have to fetch the data by telling server. The index of desired data like on first request fetch the data from 1 to 10 on next request fetch the data from 11-20 and so on."
但是,如果我们从 21-30 请求数据(它的第 3 个请求)并且创建了一些新数据(在第一个索引中),那么我们将如何加载这些数据呢?我们必须从一开始就加载所有内容吗??请指正。
成功了:
public class MyForm {
final DataHandler dataHandler;
BackendlessCollection<Note> data;
MyForm() {
dataHandler = new DataHandler(this);
}
void setData(BackendlessCollection<Note> data) {
this.data = data;
//render new set of data
}
//'Fetch Data' Button click handler
public void fetchData() {
BackendlessDataQuery dataQuery = new BackendlessDataQuery();
dataQuery.setPageSize(10);
Backendless.Data.of(Note.class).find(dataQuery, dataHandler);
}
//'Next Page' Button click handler
public void fetchNext() {
data.nextPage(dataHandler);
}
void setError(BackendlessFault fault) {
//swipeToReload.setRefreshing(false);
//Toast.makeText(getContext(), "" + fault.getMessage(), Toast.LENGTH_LONG).show();
}
class DataHandler implements AsyncCallback<BackendlessCollection<Note>> {
final MyForm form;
DataHandler(MyForm form) {
this.form = form;
}
public void handleResponse(BackendlessCollection<Note> notes) {
form.setData(notes);
}
public void handleFault(BackendlessFault fault) {
form.setError(fault);
}
}
}