首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rxjava,使用.zip合并两个livedata对象

Rxjava,使用.zip合并两个livedata对象
EN

Stack Overflow用户
提问于 2020-03-11 19:38:50
回答 1查看 273关注 0票数 0

我试图使用rxjava .zip合并两个livedata对象。这就是我到目前为止所拥有的。

代码语言:javascript
复制
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.util.Consumer;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;


import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.example.myapplication.API.model.OrderRows;
import com.example.myapplication.API.model.Orders;


import java.util.function.BiFunction;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button myButt;
    private MainViewModel mvw;
    private TextView myView;


    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        mvw = new ViewModelProvider(this).get(MainViewModel.class);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myButt = findViewById(R.id.button);
        myView = findViewById(R.id.textview);
        myButt.setOnClickListener(this);
        final Observer<Orders> obsOrders = new Observer<Orders>() {
            @Override
            public void onChanged(Orders orders) {
                Log.i("order obs", "order obs");
            }
        };
        final Observer<OrderRows> obsOrderRow = new Observer<OrderRows>() {
            @Override
            public void onChanged(OrderRows orders) {
                Log.i("orderRows obs", "orderRow obs");
            }
        };
        mvw.getAllOrders().observe(this,obsOrders);
        mvw.getAllOrderRows().observe(this,obsOrderRow);

        Observable.zip(obsOrderRow,obsOrders,mergeItems())
                .subscribe(printer());


    }
@RequiresApi(api = Build.VERSION_CODES.N)
@NonNull
private BiFunction<OrderRows, Orders, String> mergeItems() {
    return new BiFunction<OrderRows, Orders, String>() {
        @Override
        public String apply(OrderRows orderRows, Orders orders) {
            return "asd";
        }
    };
}
@NonNull
private Consumer<String> printer() {
    return new Consumer<String>() {
        @Override
        public void accept(String s) {
            Log.i("merged",s);
        }
    };
}


    @Override
    public void onClick(View view) {
        switch(view.getId()){
            case R.id.button:
                Log.i("button","clicked");
                mvw.updateOrderData(); // calls for new values to be fetched
                mvw.updateOrderRowData();
        }
    }
}

问题在于,当我尝试运行.zip函数时,我会得到以下错误。

错误:没有找到适合于zip(观察者、观察者、BiFunction) Observable.zip(obsOrderRow,obsOrders,mergeItems())的方法^^

增加了进口,这样你们就可以看到了。

EN

回答 1

Stack Overflow用户

发布于 2020-03-12 13:13:52

你使用错误的BiFunction

你有:

代码语言:javascript
复制
import java.util.function.BiFunction;

zip则选择io.reactivex.functions.BiFunction

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60643382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档