Java 如何将值从回调传递到另一个方法 private-Flowable-getInfo(){ List myList=new ArrayList(); 返回BehaviorProcessor.create(发射器->{ FirebaseDatabase.getInstance().getReference(“url”) .addListenerForSingleValueEvent(新的ValueEventListener(){ @凌驾 public void onDataChange(@NonNull DataSnapshot DataSnapshot){ if(null!=dataSnapshot){ if(dataSnapshot.exists()){ if(dataSnapshot.hasChildren()){ 对于(DataSnapshot postSnapshot:DataSnapshot.getChildren()){ 最终MyClass MyClass=postSnapshot.getValue(MyClass.class); String key=postsnashot.getKey(); 字符串firsname=myClass.getFirstName(); 添加(0,键); myList.add(1,第一个名称); } } } } } @凌驾 已取消的公共void(@NonNull DatabaseError DatabaseError){ } }); },背压等级。最新版本); } 私有可流动setMyLocation(){ 可流动。创建(发射器->{ geoFire.setLocation(键,新地理位置(myLastLocation.getLatitude(),0), myLastLocation.getLength(),(k,e)->{ }); }); }

Java 如何将值从回调传递到另一个方法 private-Flowable-getInfo(){ List myList=new ArrayList(); 返回BehaviorProcessor.create(发射器->{ FirebaseDatabase.getInstance().getReference(“url”) .addListenerForSingleValueEvent(新的ValueEventListener(){ @凌驾 public void onDataChange(@NonNull DataSnapshot DataSnapshot){ if(null!=dataSnapshot){ if(dataSnapshot.exists()){ if(dataSnapshot.hasChildren()){ 对于(DataSnapshot postSnapshot:DataSnapshot.getChildren()){ 最终MyClass MyClass=postSnapshot.getValue(MyClass.class); String key=postsnashot.getKey(); 字符串firsname=myClass.getFirstName(); 添加(0,键); myList.add(1,第一个名称); } } } } } @凌驾 已取消的公共void(@NonNull DatabaseError DatabaseError){ } }); },背压等级。最新版本); } 私有可流动setMyLocation(){ 可流动。创建(发射器->{ geoFire.setLocation(键,新地理位置(myLastLocation.getLatitude(),0), myLastLocation.getLength(),(k,e)->{ }); }); },java,android,callback,viewmodel,geofire,Java,Android,Callback,Viewmodel,Geofire,我想将列表中的值传递到下一个方法中。具体来说,我需要将密钥作为密钥传递到GeoFire的setLocation方法中,如图所示。我知道onDataChange是异步调用的,我习惯于在活动类中使用callbackListener进行调用。如何在ViewModel中执行上述操作?我愿意为一个有效的解决方案而改变整个实现 我正在Android Java中使用ViewModel、LiveDataReactiveStream。我希望得到帮助,在我的ViewModel中找到使用RxJava的解决方案 谢谢。

我想将列表中的值传递到下一个方法中。具体来说,我需要将密钥作为密钥传递到GeoFire的setLocation方法中,如图所示。我知道onDataChange是异步调用的,我习惯于在活动类中使用callbackListener进行调用。如何在ViewModel中执行上述操作?我愿意为一个有效的解决方案而改变整个实现

我正在Android Java中使用ViewModel、LiveDataReactiveStream。我希望得到帮助,在我的ViewModel中找到使用RxJava的解决方案


谢谢。

不要使用
列表
,创建自己的对象,说
信息

类信息{
私有最终字符串密钥;
私有最终字符串名;
公共信息(字符串键、字符串名){
this.key=key;
this.firstName=firstName;
}
...
}
您的
getInfo
将如下所示:

private Flowable<Info> getInfo(){

    return BehaviorProcessor.create(emitter->{

        FirebaseDatabase.getInstance().getReference("url")
                .addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                        if (null != dataSnapshot) {
                            if (dataSnapshot.exists()) {
                                if (dataSnapshot.hasChildren()) {

                                    for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {

                                        final MyClass myClass= postSnapshot.getValue(MyClass.class);
                                        String key = postSnapshot.getKey();
                                        String firstName = myClass.getFirstName();

                                        // use emitter here
                                        emitter.onNext(new Info(key, firstName))
                                    }

                                }
                            }
                        }


                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {
                        // use emitter here
                        emitter.onError(/*error*/)
                    }
                });

    }, BackpressureStrategy.LATEST);
}

希望这有帮助

什么是
myList
?它在哪里声明?我编辑了@bubbles以实例化myList。我正在使用myList存储从datasnapshot返回的字段。这里有编译错误吗<代码>可流动的getInfo()但您正在返回一个列表@我已经做了编辑。没有更多的编译错误。