java - Spinner 值自动更新到位置 0,该位置从 firebase 获取数据

标签 java android firebase firebase-realtime-database spinner

我的 Android 应用程序遇到问题。我有一个微调器,它从 Firebase 获取数据(纬度和经度)。当单击另一个选项时,微调器会采用该值,但一段时间后它会自动更新到位置 0 并采用位置 0 的值。

这是我的代码..

    databaseReference = FirebaseDatabase.getInstance().getReference();
    databaseReference.addValueEventListener(new ValueEventListener() {
                                                @Override
                                                public void onDataChange(DataSnapshot dataSnapshot) {
                                                    list.clear();
                                                    for (DataSnapshot child : dataSnapshot.getChildren()) {
                                                        list.add(child.getKey());
                                                    }
                                                    ArrayAdapter<String> adapter = new ArrayAdapter<String>(MapsActivity.this, android.R.layout.simple_spinner_item, list);
                                                    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                                                    spinner.setAdapter(adapter);
                                                    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                                                        @Override
                                                        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                                                            node = spinner.getSelectedItem().toString();
                                                            ref = FirebaseDatabase.getInstance().getReference(node);
                                                            ref.addValueEventListener(new ValueEventListener() {
                                                                @Override
                                                                public void onDataChange(DataSnapshot dataSnapshot) {
                                                                    latitude = (double) dataSnapshot.child("latitude/location").getValue();
                                                                    longitude = (double) dataSnapshot.child("longitude/location").getValue();
                                                                    mapFragment.getMapAsync(MapsActivity.this);


                                                                }


                                                                @Override
                                                                public void onCancelled(DatabaseError databaseError) {
                                                                    throw databaseError.toException(); // don't ignore errors
                                                                }
                                                            });

                                                        }


                                                        @Override
                                                        public void onNothingSelected(AdapterView<?> adapterView) {

                                                        }
                                                    });

谢谢:)

最佳答案


使用addListenerForSingleValueEvent()而不是addValueEventListener()
希望对您有帮助。

关于java - Spinner 值自动更新到位置 0,该位置从 firebase 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47573445/

相关文章:

android - 以编程方式单击主页按钮并在 flutter 中关闭屏幕

ios - ViewController 在使用 Firebase 的推送登录屏幕上出现 2-5 次(视频)

java - 我的程序在超过 100 个字符的键上出现滞后

Java 返回一个对象

java - Hibernate 不合并条目

android - 如何专业地组织按钮的样式? (SDK 26+,最低 SDK 21)

android - 如何决定我需要使用哪个 Android API 级别和 SDK 版本?

javascript - 带有 Node 和 Webpack 的 Firebase 无法正常工作 - 无法读取未定义的属性 'navigator'

java - NumberPicker 与数据库中的数组

java - 从 Microsoft CRM 2011 Online 检索多个帐户