Я получаю данные с локального сервера в своем recyclerView, используя стиль разбиения на страницы, т.е. получаю следующую страницу после завершения элементов первой страницы. Я зашел так далеко, но столкнулся с проблемой автоматической прокрутки вверх при переходе на следующую страницу и т. д.
Вот код фрагмента
Я получаю данные с локального сервера в своем recyclerView, используя стиль разбиения на страницы, т.е. получаю следующую страницу после завершения элементов первой страницы. Я зашел так далеко, но столкнулся с проблемой автоматической прокрутки вверх при переходе на следующую страницу и т. д. Вот код фрагмента [code]public class AVehicleFragment extends Fragment { Button btnsearch; RequestQueue requestQueue; StringRequest stringRequest; List vehicleinfos; RecyclerView recyclerView; VehiclelistAdapter vehiclelistAdapter; LinearLayoutManager layoutManager; int PAGE_SIZE = 20; int PAGE_NUMBE= 1; int currentitem,totalitem,scrolleditem; //RecyclerView.LayoutManager layoutManager; boolean isScrolling = false; ProgressBar progressBar; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_avehicle, container, false); btnsearch = view.findViewById(R.id.btnsearch); progressBar = view.findViewById(R.id.progressbar); vehicleinfos = new ArrayList(); recyclerView = view.findViewById(R.id.rvvehilelist); recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { isScrolling = true; recyclerView.scrollToPosition(scrolleditem); Log.d(TAG, "onScrollStateChanged: "); }
}
@Override public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); currentitem = layoutManager.getChildCount(); scrolleditem = layoutManager.findFirstVisibleItemPosition(); totalitem = layoutManager.getItemCount(); if (isScrolling &&(currentitem + scrolleditem==totalitem)){ isScrolling=false; fetchData(); // recyclerView.scrollToPosition(scrolleditem); Log.d(TAG, "onScrollStateChanged: "); }
} });
layoutManager = new LinearLayoutManager(getContext()); readInitialvehicle(PAGE_SIZE,PAGE_NUMBE); recyclerView.scrollToPosition(scrolleditem); return view; }
public void readInitialvehicle(int pagesize, int pagenum){
stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener() { @Override public void onResponse(String response) { try { JSONArray jsonArray = new JSONArray(response); for (int i =0;i