gpt4 book ai didi

java - onMarkerClick 内的 Firebase 查询无法正常工作

转载 作者:行者123 更新时间:2023-12-01 23:53:50 24 4
gpt4 key购买 nike

我有一个 Activity ,其中我从 Firebase 数据库获取数据并在 map 上显示多个标记。在 onMarkerClick 中,我希望用户转到另一个 Activity ,其中包含有关所点击的标记的详细信息。第一次点击标记时,它仅显示标题,第二次点击时,它会在执行 Firebase 数据库查询以获取该标记的 ID 后转到其他 Activity ,以便提供有关点击的标记的正确详细信息。

问题是,当我第一次点击任何标记,然后如果我点击任何其他标记,打开的 Activity 将打开首先点击的标记的详细信息。

如果我点击同一个标记两次,效果很好。但是,当我回到 map Activity 时,第一次点击任何标记,将打开之前点击的标记的详细信息。

如何在 onMarkerClick 内执行正确的查询。

这是代码。

 @Override
public boolean onMarkerClick(Marker marker) {

eventTitle = marker.getTitle();

q = database.getReference("events")
.orderByChild("event_title")
.equalTo(marker.getTitle());

q.addValueEventListener(vel);

Intent intent = new Intent(NearbyEventsActivity.this, EventDetailActivity.class);
Bundle bundle = new Bundle();
bundle.putString("eventid", eventid);
intent.putExtras(bundle);
if (eventid != null) {
startActivity(intent);
}

return false;
}

ValueEventListener vel = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Event e = snapshot.getValue(Event.class);
eventid = e.getEvent_id();
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};

最佳答案

The problem is when I tap on any marker the first time, and then If I click on any other marker, the opened activity opens up the details of the marker that was tapped first.

Firebase 查询异步执行。您的 ValueEventListener 不会立即被调用。

onDataChange 方法中使用第二个 Activity 启动代码。

    @Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Event e = snapshot.getValue(Event.class);
eventid = e.getEvent_id();
}

Intent intent = new Intent(NearbyEventsActivity.this, EventDetailActivity.class);
Bundle bundle = new Bundle();
bundle.putString("eventid", eventid);
intent.putExtras(bundle);
if (eventid != null) {
startActivity(intent);
}
}

关于java - onMarkerClick 内的 Firebase 查询无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58212261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com