Java 在recyclerview中从firebase获取数据时,一次又一次地获取重复数据
我正在从firebase获取数据。首先,我只获取10个项目,然后当用户滚动recyclerview时,接下来的10个项目正在获取。 现在我的问题是,当我滚动recyclerview时,我得到了重复的数据。我不知道为什么会这样。为什么要再次获取相同的数据。 请看我的代码,告诉我我的错误 当我第一次仅获取10个项目时:Java 在recyclerview中从firebase获取数据时,一次又一次地获取重复数据,java,android,firebase,firebase-realtime-database,android-recyclerview,Java,Android,Firebase,Firebase Realtime Database,Android Recyclerview,我正在从firebase获取数据。首先,我只获取10个项目,然后当用户滚动recyclerview时,接下来的10个项目正在获取。 现在我的问题是,当我滚动recyclerview时,我得到了重复的数据。我不知道为什么会这样。为什么要再次获取相同的数据。 请看我的代码,告诉我我的错误 当我第一次仅获取10个项目时: content = getIntent().getStringExtra("jokecontent"); funnyJokesQuery = Fir
content = getIntent().getStringExtra("jokecontent");
funnyJokesQuery = FirebaseDatabase.getInstance().getReference("ContentJokes").orderByChild("subcategory")
.equalTo(content).limitToFirst(10);
funnyJokesQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
String contentdisplay = dataSnapshot.child("content").getValue(String.class);
ContentModel contentModel = new ContentModel(contentdisplay);
contentname.add(0,contentModel);
arrayAdapter.notifyDataSetChanged();
progressBar.setVisibility(View.GONE);
arrayAdapter.notifyItemInserted(0);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
recyclerview的onScrollListener用于获取下一个项目的代码:
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if(newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL)
{
isScrolling = true;
}
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
currentitems = manager.getChildCount();
totalitems = manager.getItemCount();
scrollOutItems = manager.findFirstVisibleItemPosition();
lastItemPosition = manager.findLastVisibleItemPosition();
if(isScrolling &&(currentitems +scrollOutItems == totalitems)){
funnyJokesQuery = FirebaseDatabase.getInstance().getReference("ContentJokes")
.orderByChild("subcategory")
.startAt(lastItemPosition)
.limitToFirst(11);
progressBar.setVisibility(View.VISIBLE);
funnyJokesQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
String contentdisplay = dataSnapshot.child("content").getValue(String.class);
ContentModel contentModel = new ContentModel(contentdisplay);
contentname.add(lastItemPosition + 1, contentModel);
arrayAdapter.notifyDataSetChanged();
progressBar.setVisibility(View.GONE);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
}
});