Я пытаюсь отобразить местоположение других пользователей от моей позиции до них (например, от 1 до 1 балла).Проблема в том, что я не знаю, как отобразить из базы данных в реальном времени Firebase в Rickler.Я хочу показать что-то вроде этого:
Я уже начал код:
public class DriverMain extends AppCompatActivity{
private BottomNavigationView bottomNavigationView;
private RecyclerView notifRecyclerView;
private List<NotifData> result;
private FirebaseDatabase database;
private DatabaseReference passengerRequest;
private FirebaseRecyclerAdapter<NotifData,NotifAdapter> adapter;
private LatLng currentLocation;
private Location mLastLocation;
private LatLng pickupLocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_driver_main);
BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.nav_bottom_driver);
DriverMapActivity.BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
Menu menu = bottomNavigationView.getMenu();
MenuItem menuItem = menu.getItem(1);
menuItem.setChecked(true);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.bottom_map:
startActivity(new Intent(DriverMain.this, DriverMapActivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION));
break;
case R.id.bottom_notif:
startActivity(new Intent(DriverMain.this, DriverMain.class).addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION));
break;
case R.id.bottom_profile:
startActivity(new Intent(DriverMain.this, DriverProfileActivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION));
break;
}
return true;
}
});
//----! RecyclerView !----//
result = new ArrayList<>();
notifRecyclerView = (RecyclerView) findViewById(R.id.notifRecycler);
notifRecyclerView.setHasFixedSize(true);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
notifRecyclerView.setLayoutManager(linearLayoutManager);
//------!Database!------//
database = FirebaseDatabase.getInstance();
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
passengerRequest = database.getReference().child("Users").child("Driver").child(userId).child("passengerRequest");
getList();
}
private void getList() {
Query query = passengerRequest
.orderByChild("destination")
.limitToLast(50);
FirebaseRecyclerOptions<NotifData> options =
new FirebaseRecyclerOptions.Builder<NotifData>()
.setQuery(query, NotifData.class)
.build();
adapter = new FirebaseRecyclerAdapter<NotifData,NotifAdapter>(options) {
@Override
protected void onBindViewHolder(@NonNull NotifAdapter holder, int position, @NonNull NotifData model) {
holder.notifDestination.setText(model.getNotifDestinationData());
}
@NonNull
@Override
public NotifAdapter onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_request,parent,false);
return new NotifAdapter(view);
}
};
notifRecyclerView.setAdapter(adapter);
adapter.startListening();
}
}