Как использовать getItemAtPosition в моем счетчике из Firebase в Google Map, используя android Studio - PullRequest
1 голос
/ 08 января 2020

Мне нужна помощь. Здесь я загружаю название больницы из firebase в счетчик, как я хочу получить getItemAtposition, потому что когда я нажимаю на название больницы, оно должно быть выбрано и нажимается на кнопку getDirection в моем приложении, чтобы оно перезагрузилось на карту Google и отметило конкретную больницу, которая является выбрано так, теперь, как можно сделать в моем java коде, но я знаю, что-то упустил, но не могу найти меня, пожалуйста, помогите мне заранее Спасибо

Java code 

//init Db
        hospitalRef = FirebaseDatabase.getInstance().getReference("hospital");
        //init interface
        iFirebaseLoaddone = this;

        hospitalRef.addListenerForSingleValueEvent(new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                List<Hospital> hospital = new ArrayList<>();
                for (DataSnapshot hospitalsnapshot : dataSnapshot.getChildren()) {
                    hospital.add(hospitalsnapshot.getValue(Hospital.class));
                }
                iFirebaseLoaddone.onFirebaseLoadSuccess(hospital);

            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
                iFirebaseLoaddone.onFirebaseLoadFailed(databaseError.getMessage());
            }
        });

        searchableSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                String seleceted =parent.getItemAtPosition(position).toString();
                Log.e("clicked",""+ seleceted);


                hospitalRef.addChildEventListener(new ChildEventListener() {

                    @Override
                    public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                        setMarker(dataSnapshot);

                      //  Comment comment = dataSnapshot.getValue(Comment.class);

                    }

                    @Override
                    public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                        setMarker(dataSnapshot);

                    }

                    @Override
                    public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

                    }

                    @Override
                    public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

                    }

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

                    }


                });
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
 @Override
    public void onFirebaseLoadSuccess(List<Hospital> hospitalList) {

        hospitals = hospitalList;

        //get all data
        List<String> id = new ArrayList<>();
        List<String> name_list = new ArrayList<>();
        List<Double> latitude = new ArrayList<>();
        List<Double> longitude = new ArrayList<>();
        for (Hospital hospital : hospitalList)
            // id.add(hospital.getId());
            name_list.add(hospital.getName());


        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, name_list);
        searchableSpinner.setAdapter(adapter);

    }

enter image description here

1 Ответ

2 голосов
/ 08 января 2020

Вы можете получить выбранное значение из счетчик , как показано ниже,

String seleceted =parent.getItemAtPosition(position).toString(); //your code
String selected = name_list.get(position); //another way to get selected name

Вы можете получить широта и долгота от счетчика - название больницы от пожарная база DB.

Query query = reference.orderByChild("name").equalTo(seleceted);
     query.addChildEventListener(new ChildEventListener() {
                       @Override
                       public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                           double latitude = dataSnapshot.child("latitude").getValue();
                           double longitude = dataSnapshot.child("longitude").getValue();
                           setMarker(latitude,longitude);
                       }

                       @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) {

                       }
                   });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...