Я получаю свои данные из firebase, и все работает нормально, но в представлении списка я получаю призрачные записи (элементы), как показано ниже.
https://i.imgur.com/9sVk20x.jpg "это скриншот сdevice "
- вот мой код, из которого я получаю и отображаю элементы списка
public void displayNearTopics(GeoQuery locGeoQuery) {
//Log.d(TAG, "SharedPref, new topics: "+prefs.getInt(NO_NEW_TOPICS,0));
locTopics.clear();
loctopicId.clear();
locTopicsListAdapter = new TopicsListAdapter(getActivity(), locTopics, loctopicId);
mTopicsRecyclerView.setAdapter(locTopicsListAdapter);
//mTopicsRecyclerView.setHasFixedSize(true);
mTopicsRecyclerView.showShimmerAdapter();
mTopicsRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
locGeoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(final String key, GeoLocation location) {
//key is the topic key
//Toast.makeText(getActivity(), "The retrieved keys are:" + key, Toast.LENGTH_SHORT).show();
mTopicsRecyclerView.hideShimmerAdapter();
Log.d(TAG, "Key entered:"+ key);
if(bottomNavigation.getCurrentItem()!=2){
int currentCount = prefs.getInt(NO_NEW_TOPICS, 0)+1;
Log.d(TAG, "ONKEYENTERED, SharedPref, new topics, current count: "+currentCount);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(NO_NEW_TOPICS, currentCount);
editor.apply();
Log.d(TAG, "ONKEYENTERED, SharedPref, new topics, shared ref: "+prefs.getInt(NO_NEW_TOPICS, 0));
//bottomNavigation.setNotification(String.valueOf(currentCount),2);
//bottomNavigation.refresh();
}
else{
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(NO_NEW_TOPICS, 0);
editor.apply();
}
DatabaseReference topicRef = FirebaseDatabase.getInstance().getReference()
.child(FirebaseValues.TOPICS_TABLE).child(key);
topicRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Topics tempTopic;
tempTopic = dataSnapshot.getValue(Topics.class);
locTopics.add(0, tempTopic);
loctopicId.add(0, key);
locTopicsListAdapter.notifyItemInserted(locTopics.size() - 1);
swipeRefTopic.setRefreshing(false);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
public void onKeyExited(String key) {
}
@Override
public void onKeyMoved(String key, GeoLocation location) {
}
@Override
public void onGeoQueryReady() {
}
@Override
public void onGeoQueryError(DatabaseError error) {
}
});
}
Я использую FireFase Geofire для получения ключей, которые имеют заданный радиус.Все работает отлично, за исключением того, что я получаю некоторые неизвестные элементы в моем списке просмотра.Кроме того, они исчезают, как только я прокручиваю достаточно вниз, а затем возвращаюсь назад.