RecyclerView бесконечный свиток с залпом

Я пытаюсь создать бесконечный свиток RecyclerView. Я работаю с PHP и MySQL. В моем PHP-скрипте запрос на 2 элемента каждый раз, когда RecyclerView достигает дна.

$query = "SELECT * FROM beichten WHERE id BETWEEN ($id+1) AND ($id+2)";

Можно ли сделать это с Волей?

Я создал класс, который запускает мой класс запросов каждый раз, когда RecyclerView достигает дна.

private boolean isLastItemDisplaying(RecyclerView recyclerView) {
if (recyclerView.getAdapter().getItemCount() != 0) {
int lastVisibleItemPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findLastCompletelyVisibleItemPosition();
if (lastVisibleItemPosition != RecyclerView.NO_POSITION && lastVisibleItemPosition == recyclerView.getAdapter().getItemCount() - 1){
Toast.makeText(Menue.this, "BOTTOM", Toast.LENGTH_SHORT).show();requestJsonObject();
}
}
return false;
}

Это работает, но RecyclerView загружается снова и показывает только 2 новых загруженных объекта.

private void requestJsonObject() {

RequestQueue queue = Volley.newRequestQueue(this);
StringRequest stringRequest = new StringRequest(Request.Method.POST, getbeichtenphp, new Response.Listener<String>() {
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onResponse(String response) {
GsonBuilder builder = new GsonBuilder();
Gson mGson = builder.create();
List<ItemObject> posts = new ArrayList<ItemObject>();
posts = Arrays.asList(mGson.fromJson(response, ItemObject[].class));
adapter = new RecyclerViewAdapter(Menue.this, posts);
recyclerView.setAdapter(adapter);
progressDialog.dismiss();

recyclerView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Overridepublic void onScrollChange(View view, int i, int i1, int i2, int i3) {
isLastItemDisplaying(recyclerView);
}
});

}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> parameters = new HashMap<String, String>();

parameters.put("id", String.valueOf(adapter.getItemCount()));

return parameters;
}
};
queue.add(stringRequest);
}

0

Решение

Я сталкиваюсь с этой проблемой раньше, чем пройти id параметр в мой API, я добавляю id это на мой URL

Определите ваш URL, как это

private String getbeichtenphp = "http://your/url/here/?id="

Затем при залпе вы передаете значение идентификатора в URL.

 //pass the id as a parameter to your requestJsonObject function here
private void requestJsonObject(int id) {

RequestQueue queue = Volley.newRequestQueue(this);
//add your id here
StringRequest stringRequest = new StringRequest(Request.Method.POST, getbeichtenphp + id, new Response.Listener<String>() {

Для первоначального вызова для этой функции должно быть

requestJsonObject(0)

Делая это, идентификатор будет продолжать складываться, заканчивая тем, что выбирал новый 2 предмета каждый Запрос залпа.

Еще одна вещь, вы должны использовать GET метод как твой Request.method и получить значение на PHP, а не с помощью POST метод.

Посмотри на это YouTube видео,Я думаю, у вас будет более четкая картина.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector