새 학교 프로젝트에서는 RecyclerView
을 사용하고 데이터 소스로는 RealmDB
을 사용하기 시작합니다. 지금까지 목록보기를 새로 고칠 때까지는 꽤 괜찮습니다. 여기에 demo입니다. notifyDataSetChanged()
때문에 검은 화면이 깜박입니다. 내가 덜 명백하게하고 싶다면 검정 대신 흰색 배경을 설정할 수 있습니다.리사이클러 목록을 올바르게 새로 고치는 법
하지만 분명히 깜박이는 화면을 완전히 없애려면 어떤 메커니즘을 사용해야합니까? 같은 결과를 얻을 수 있다면 매우 감사하겠습니다. here
지금까지 목록보기를 새로 고치는 방법은 무엇입니까?
- STEP 1. 나는 변경 사항을 통지합니다
mRealm.executeTransactionAsync(new Realm.Transaction() { @Override public void execute(Realm realm) { for (Post post : posts) { //create post realm.copyToRealmOrUpdate(post); //create common result row CommonResult cr = new CommonResult(); int id = module.hashCode() + post.getId(); cr.setId(id); cr.setPost(post); cr.setPostid(post.getId()); cr.setTag(module.hashCode()); realm.copyToRealmOrUpdate(cr); } } }, new Realm.Transaction.OnSuccess() { @Override public void onSuccess() { RealmResults<CommonResult> cr = mRealm.where(CommonResult.class) .equalTo("tag", module.hashCode()) .findAll(); mPostView.showListingView(cr, hasNext()); } });
STEP 3. 영역을 #realm하는
STEP 2. 결과 및 업데이트를 구하거나 추가받은 게시물에 웹 API를 호출 어댑터와 알림 블록은 재활용 어댑터에
notifyDataSetChanged()
을 호출합니다. 내 어댑터에서
(RecyclerView.Adapter
)
this.data.addChangeListener(new RealmChangeListener<RealmResults<CommonResult>>() {
@Override
public void onChange(RealmResults<CommonResult> element) {
notifyDataSetChanged();
}
});
내가 notifyItemChanged(i, element)
에 notifyDataSetChanged()
을 변경했다 UPDATE. 깜빡임이 사라지고 애니메이션이 부드럽게됩니다 .-)
어떻게 당신이 호출에
에서 변경의 onChange (---) 변경이있는 경우 – Rahul
안녕 @Rah이 RealmDB는 자동으로이 메소드를 호출 수신기의 방법 이 테이블 안에. – Sanny
당신은 onChange() 메소드 내부에 어떤 로그를 추가하고 트리거/프린트를 얻는 횟수를 체크 할 수 있습니다. 많은 레코드가 있고이 메소드가 여러 번 호출되기 때문에 – Rahul