我正在尝试学习一些RxJava和RxAndroid,并且我认为使用此工具可以轻松解决我遇到的问题。这是问题所在:
我们在一个Activity中可以有“ N”个视图,并且每个视图都用来满足某些条件。当用户按下“保存”时,我们要检查所有视图中是否都满足所有条件,如果不满足,请要求用户分别确认每个条件。
因此,这是没有RxJava时如何处理此问题的示例:

private void validation(List<CustomView> views)
{
    for (CustomView view : views)
    {
        if (view.metCondition() == false)
        {
            showConfirmationDialog(view);
            return false;
        }
    }

    return true;
}


private void showConfirmationDialog(CustomView view)
{
    ConfirmationDialog dialog = new ConfirmationDialog(this, view);

    dialog.show();
}

private void dialogResult(CustomView view)
{
    view.setCondition(true);

    validation(mViews);
}


显然,我会有某种侦听器用于确认结果,并且在确认条件(单击“确定”或“取消”)后,“ view.metCondition()”将设置为true,因此不会再次弹出该视图。当然,在“验证”返回true之后,它将运行“ Save()”函数。

这是我真正的解决方案的真实展示,因为我想使它尽可能简单,因此,如果您知道如何使用RxJava来完成此操作,请发表评论。我已经将库用于一些异步的东西(与USB连接的设备通信),所以我知道一些东西,但是却不知道如何像这样链接这些调用。

任何帮助是极大的赞赏。

编辑

添加了监听器方法,因此我们可以看到再次调用了“ validate()”函数

最佳答案

对于链式验证,您应该真正查看combineLatest() operator。首先,为每个Observable创建View,然后使用该运算符。 RxBinding是Android视图的出色扩展。

请参见this示例。这是一个很好的验证。

关于android - UI线程上的链接RxJava调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35797526/

10-13 03:29