>

사용자가 Recyclerview 의 맨 아래에 도달 할 때마다 더 많은 데이터를로드하려고합니다.  다음을 사용하여 다음 페이지의 데이터를 가져옵니다.

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            if (!recyclerView.canScrollVertically(1) && isEnd) {
                page++;
                isEnd = false;
                new fetchData().execute(page);
            }
        }
    });

그리고 모든 것이 잘 작동하지만 애니메이션에 문제가 있습니다. 매번 더 많은 데이터를로드 할 때마다 Recyclerview  사라지고 보여줍니다.

나의 나머지 코드는 다음과 같습니다.

  public class fetchData extends AsyncTask<Integer, List<Wallpaper>, List<Wallpaper>> {
        Document doc = null;
        ArrayList<Wallpaper> urls = new ArrayList<>();
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }
        @Override
        protected List<Wallpaper> doInBackground(Integer... integers) {
            try {
                doc = Jsoup.connect(URLSource+"/page/" + integers[0]).get();
            } catch (IOException e) {
                e.printStackTrace();
            }
            Elements newsHeadlines = doc.select(".thumbnail");
            for (Element headline : newsHeadlines) {
                String thumb = headline.select("img").attr("src");
                String title = headline.select("img").attr("alt");
                Wallpaper wallpaperInfo = new Wallpaper();
                URL = URL.replace("/wallpapers/", "/walls/");
                wallpaperInfo.setThumbnails(URL);
                wallpaperInfo.setTitle(title);
                urls.add(wallpaperInfo);
            }
            return urls;
        }
        @Override
        protected void onPostExecute(List<Wallpaper> wallpapers) {
            super.onPostExecute(wallpapers);
            setAdapterForRecyclerView(wallpapers);
            isEnd = true;
        }
    }
private void setAdapterForRecyclerView(List<Wallpaper> wallpapers) {
        if (myAdapter == null) {
            myAdapter = new MyAdapter(wallpapers, getActivity(), new RecyclerViewClickListener() {
                @Override
                public void onClick(View view, Wallpaper wallpaper) {
                    Intent intent = new Intent(getActivity(), FullScreen.class);
                    intent.putExtra("img", wallpaper.getThumbnails());
                    if (wallpaper.getTitle().isEmpty()) {
                        intent.putExtra("title", "Unknown");
                    } else {
                        intent.putExtra("title", wallpaper.getTitle());
                    }
                    startActivity(intent);
                    /* TODO: FULLSCREEN ACTIVITY HERE*/
                }
                @Override
                public void onClick(View view, Category categories) {
                }
            });
            recyclerView.setAdapter(myAdapter);
        } else {
            myAdapter.getItems().addAll(wallpapers);
            myAdapter.notifyDataSetChanged();
        }
        progressbar.setVisibility(View.GONE);
        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
                if (!recyclerView.canScrollVertically(1) && isEnd) {
                    page++;
                    isEnd = false;
                    new fetchData().execute(page);
                }
            }
        });
    }

이 애니메이션을 멈추도록 도와주세요. 애니메이션없이 더 많은 데이터를로드하고 싶습니다


  • 답변 # 1

    나는 새로운 어댑터 인스턴스를 생성 하고이 새로운 어댑터를 다시 recyclerview로 설정 하여이 동작을 일으킬 수 있기 때문에 문제가 setAdapterForRecyclerView를 호출하는 것으로 생각합니다. 새로운 월페이퍼 객체 목록을 recyclerview 목록에 추가 한 다음 notifydatasetchanged를 호출하는 것이 좋습니다

  • 이전 html - aframe 360 ​​비디오는 처음에만 표시됩니다 그런 다음 소리 만
  • 다음 jquery - 다른 DIV에서 하이퍼 링크를 클릭하면 클래스 추가