홈>
사용자가
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
관련 자료
- swift - 탭했을 때 애니메이션을 중지하는 방법
- list - 생성기가 파이썬을 위해 멈출 때?
- javascript - 뷰포트에 올 때 게으른로드 맵
- multithreading - ws에 연결할 수 없을 때 채널 중지
- read.csv - CSV 파일을로드하려고하면 R이 충돌합니다
- android - 탭을 클릭 한 경우에만 조각로드
- java - 기본 recyclerView에 대한 확장 애니메이션 만들기 (보기의 가시성을 사라짐에서 보이지 않게 변경)
- react native - 상단에 도달하면 더로드
- java - RecyclerView가 처음에 데이터를로드하지 않음
- laravel - Div로 스크롤 할 때 Javascript 더로드
- java - recyclerView에 데이터를로드하는 방법
- java - recyclerView에 모든 항목을 한 번에로드하는 방법은 무엇입니까?
- c# - XmlDocument로 XML 파일을로드 할 때 오류가 발생하는 이유는 무엇입니까?
- python - 피킹되지 않은 파일을로드 할 때 큰 데이터 크기
- c++ - 필요한 경우 Qt QThread 중지
- java - 초기화시 FXML로드 예외
- python - 텍스트가 끝나면 루프 반복 중지
- javascript - for 루프를 통과 할 때 지연을 중지하는 방법은 무엇입니까?
- c# - 모든 적이 죽었을 때 장면을로드
- android - RecyclerView 부드러운 스크롤 애니메이션
관련 질문
- java : 화면이 잠겨 있거나 꺼져 있을 때 카메라 셔터 onkeyevent가 있는 Android 앱
- java : Webview에서 사용자 이름 및 비밀번호와 같은 로그인 자격 증명을 저장하는 방법
- java : Android 그래픽으로 그림판에서 그래프 그리기
- java : bumblebee android studio 버전으로 업데이트할 때 오류 gradle
- java : Icon MenuItem 안드로이드 앱을 변경하는 방법
- java : 앱에 암시적 내부 의도 취약점이 있습니다.
- android : Jetpack 작성 탐색은 이전 화면으로 돌아가지 않고 앱을 닫습니다.
- java : Android 앱 -지도 조각에서 사라지는 Google 지도 위치 마커
- java : URI를 업데이트하려고 할 때 FileNotFoundException이 발생하는 ActivityResultContracts.TakePicture()
- java : android studio에서 SQLite 데이터가 지속되지 않음
나는 새로운 어댑터 인스턴스를 생성 하고이 새로운 어댑터를 다시 recyclerview로 설정 하여이 동작을 일으킬 수 있기 때문에 문제가 setAdapterForRecyclerView를 호출하는 것으로 생각합니다. 새로운 월페이퍼 객체 목록을 recyclerview 목록에 추가 한 다음 notifydatasetchanged를 호출하는 것이 좋습니다