以块(小部件)加载来自Backendless的数据

时间:2016-07-07 13:25:57

标签: android backendless

我正在试图弄清楚我的问题的答案,我正在从中获取数据 backendless异步。

CODE:

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的页脚(这里填充我提取的数据)但是我不知道怎么回事这样做,我在脑海里想到的是“你必须通过告诉服务器获取数据。所需数据的索引,如第一次请求,在下次请求时从1到10获取数据,从11获取数据20等等。“

但是如果我们从21-30请求数据(第3个请求)并创建了一些新数据(在第一个索引中)那么我们将如何加载这些数据呢?我们是否必须从开始加载所有内容?请纠正我。

1 个答案:

答案 0 :(得分:0)

让它运转起来:

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);
        }
    }
}