我创建了一个显示我附近用户项目的应用。
[我使用geoQuery找到了附近的人,如果他们靠近我,我会在数据库中搜索他们拥有的物品,然后在其中填充recyclerView
。
我通过使用:
List<DiscoverItems> items = new ArrayList<>();
GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(Lat, Lon), Radius);
geoQuery.addGeoQueryEventListener( new GeoQueryEventListener() {
@Override
public void onKeyEntered(String key, GeoLocation location) {
String UserID = key;
if (!UserID.equals( auth.getUid() )) {
db.collection( "Users" ).document( UserID ).collection( "MyItems" ).get().addOnCompleteListener( task_count -> {
if (task_count.isSuccessful()) {
for (DocumentSnapshot document_near : task_count.getResult()) {
items.add(new DiscoverItems( document_near.getString( "ItemID" ) ));
}
}
} );
}
discoverItemAdapter = new DiscoverItemAdapter( items, listener );
rv_NearMeItems.setAdapter( discoverItemAdapter );
}
@Override
public void onKeyExited(String key) {
}
@Override
public void onKeyMoved(String key, GeoLocation location) {
}
@Override
public void onGeoQueryReady() {
}
@Override
public void onGeoQueryError(DatabaseError error) {
}
} );
但是,我的问题是,如果某些用户拥有相同的物品,因为当我希望它具有独特的物品时,它将在recyclerView中出现两次。
有什么解决方案可以首先检查我的商品列表是否重复,然后才添加它们?
谢谢
我不知道您的对象的复杂性,但是您可以尝试将List<>
int更改为Set<>
。
因此更改为:
List<DiscoverItems> items = new ArrayList<>();
进入:
Set<DiscoverItems> items = new HashSet<>();