小编Ign*_*nte的帖子

将Observable <RealmResults <T >>>转换为Observable <List <T >>>

我尝试使用Realm和RxJava实现模式Repository.存储库接口具有这样的签名

Observable<List<T>> query(Specification specification);
Run Code Online (Sandbox Code Playgroud)

因此,当我使用Realm并想要检索结果"asObservable"时,我得到了Observable>.我找不到将Observable变换为Observable>的方法.

任何人都可以帮忙解决这个问题吗?

我试过这样的事

final Observable<RealmResults<PlantRealm>> realmResults = realm.where(PlantRealm.class)
               .equalTo(PlantTable.ID, "1")
               .findAll().asObservable();

// convert Observable<RealmResults<PlantRealm>> into Observable<List<PlantRealm>>

    return realmResults.flatMap(Observable::from).toList().map(list -> {

                for (PlantRealm plantRealm : list) {
                    plants.add(toPlant.map(plantRealm));
                }
                return Observable.from(plants);
            }
    );
Run Code Online (Sandbox Code Playgroud)

但类型检查系统仍在抱怨....

return Observable.create( subscriber -> {

       final Realm realm = Realm.getInstance(realmConfiguration);
       final RealmResults<PlantRealm> realmResults = realm.where(PlantRealm.class)
               .equalTo(PlantTable.ID, "1")
               .findAll();

       final List<Plant> plants = new ArrayList<>();

       for (PlantRealm plantRealm : realmResults) {
           plants.add(toPlant.map(plantRealm));
       }

       realm.close();

       subscriber.onNext(plants);
       subscriber.onCompleted();
   });
Run Code Online (Sandbox Code Playgroud)

android realm rx-java

7
推荐指数
1
解决办法
1688
查看次数

如果它是空的,则切换observable

我实现了两个存储库以管理我的数据.因此,如果数据库中没有数据,则应向API询问相关信息.我在其他帖子中看到这可以使用switchIfEmpty解决,但它对我不起作用.

我尝试了以下代码.调用行restApiFlavorRepository.query(规范),但永远不会通知订阅者.

public Observable query(Specification specification) {

    final Observable observable = flavorDaoRepository.query(specification);

    return observable.map(new Func1() {
        @Override
        public Observable<List<Flavor>> call(Object o) {
            if(((ArrayList<Flavor>)o).isEmpty()) {
                return restApiFlavorRepository.query(specification);
            }
            return null;
        }
    });

}
Run Code Online (Sandbox Code Playgroud)

还有这个

public Observable query(Specification specification) {

    final Observable observable = flavorDaoRepository.query(specification);

    return observable.switchIfEmpty(restApiFlavorRepository.query(specification));

}
Run Code Online (Sandbox Code Playgroud)

当我获得两种口味时,我仍然会得到空列表.

更新

我在找什么,是这个......

public Observable query(Specification specification) {

    Observable<List<Plant>> query = mRepositories.get(0).query(specification);

    List<Plant> list = new ArrayList<>();
    query.subscribe(plants -> list.addAll(plants));

    Observable<List<Plant>> observable = Observable.just(list);

    return observable.map(v -> !v.isEmpty()).firstOrDefault(false)
            .flatMap(exists -> …
Run Code Online (Sandbox Code Playgroud)

java realm rx-java

5
推荐指数
1
解决办法
1万
查看次数

浮动操作按钮未显示 - viewpager

我在这里阅读了一些关于这个问题的帖子,但我无法显示 FAB。我尝试了不同的方法,但我真的不知道发生了什么。

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar_layout"
    android:layout_width="match_parent"
    android:layout_height="112dp"
    android:background="@color/colorPrimary"
    android:elevation="@dimen/elevation_toolbar"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:fitsSystemWindows="true">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:contentScrim="@color/colorPrimary"
        app:expandedTitleMarginEnd="64dp"
        app:expandedTitleMarginStart="48dp"
        app:layout_scrollFlags="scroll|enterAlways"
        android:fitsSystemWindows="true">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?actionBarSize"
            android:layout_marginLeft="@dimen/list_toolbar_side_margin"
            android:layout_marginRight="@dimen/list_toolbar_side_margin"
            app:layout_collapseMode="pin" />

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            style="@style/AppTabLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            app:tabGravity="fill"
            app:tabMode="fixed"
            app:tabTextAppearance="@style/AppTabTextAppearance"/>

    </android.support.design.widget.CollapsingToolbarLayout>

</android.support.design.widget.AppBarLayout>

<android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    />

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab_id"
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:layout_gravity="end|bottom"
    android:layout_margin="16dp"
    android:clickable="true"
    android:src="@drawable/ic_add"
    />
Run Code Online (Sandbox Code Playgroud)

如果它检查 android studio 中的预览,则 fab 就在那里。甚至,当我调试应用程序时,我可以看到 fab 已创建。

晶圆厂

我也尝试将app:layout_anchor="@id/viewpager"app:layout_anchor="@id/app_bar_layout"与 **app:layout_anchorGravity="bottom|right" ** 一起使用,但没有奏效。FAB 被 viewpager 覆盖。我怎样才能避免这种情况?

我附上主要活动的图像。您将看到一个按钮“添加植物”。该按钮应由 FAB …

android android-viewpager floating-action-button android-coordinatorlayout

5
推荐指数
1
解决办法
5420
查看次数

jbehave与jenkins的整合

我必须将jbehave与jenkins整合在一起.但我不知道如何做到这一点.我看到我必须在Jenkins中创建一个任务,但我不知道我应该在哪里接受这个任务.

有人能帮助我吗?

谢谢,

萨朗

continuous-integration jbehave jenkins

3
推荐指数
1
解决办法
7881
查看次数