package com.shizhefei.test.models.datasource.volley;
import android.net.Uri;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.shizhefei.mvc.IAsyncDataSource;
import com.shizhefei.mvc.RequestHandle;
import com.shizhefei.mvc.ResponseSender;
import com.shizhefei.test.models.enties.Book;
import com.shizhefei.utils.MyVolley;
import java.util.ArrayList;
import java.util.List;
public class BooksVolleyDataSource implements IAsyncDataSource<List<Book>> {
private int mPage;
private int mMaxPage = 5;
@Override
public RequestHandle refresh(ResponseSender<List<Book>> sender) throws Exception {
return loadHomeGroup(sender, 1);
}
@Override
public RequestHandle loadMore(ResponseSender<List<Book>> sender) throws Exception {
return loadHomeGroup(sender, mPage + 1);
}
@Override
public boolean hasMore() {
return mPage < mMaxPage;
}
private RequestHandle loadHomeGroup(final ResponseSender<List<Book>> sender, final int page) throws Exception {
String url = "https://www.baidu.com";
Uri.Builder builder = Uri.parse(url).buildUpon();
builder.appendQueryParameter("page", String.valueOf(page));
StringRequest jsonObjRequest = new StringRequest(Request.Method.GET, builder.toString(), new Response.Listener<String>() {
@Override
public void onResponse(String response) {
List<Book> books = new ArrayList<Book>();
for (int i = 0; i < 30; i++) {
books.add(new Book("page" + page + " Java编程思想 " + i, 108.00d));
}
mPage = page;
sender.sendData(books);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
sender.sendError(error);
}
});
MyVolley.getRequestQueue().add(jsonObjRequest);
return new VolleyRequestHandle(jsonObjRequest);
}
}