首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RxJava如何对每个列表项进行调用?

RxJava如何对每个列表项进行调用?
EN

Stack Overflow用户
提问于 2018-08-14 05:25:15
回答 1查看 0关注 0票数 0

有一个getAll()方法,它返回一个列表,提供来自Room数据库的数据

代码语言:javascript
复制
@Query("SELECT * from decks ORDER BY id ASC")
fun getAll(): Flowable<List<DeckEntity>>

DeckEntity有一个id和一个name领域

创建了另一个名为它的类PrepareItem,因为我想用更多的参数来装箱

代码语言:javascript
复制
data class PrepareItem (
    var deckEntity: DeckEntity,
    var countsOfCards: Int
)

调用getAll(),想将它映射到PrepareItem,还在工作。

代码语言:javascript
复制
deckRepository.getAll()
                .map {
                    it.map {
                        PrepareItem(it,0)
                    }
                }
代码语言:javascript
复制
fun mapper(item: DeckEntity) : Single<PrepareItem> {
    return cardRepository.getDueDatedCardsFromDeck(deckId = item.id!! /*TODO !!*/)
            .map {
                PrepareItem(item, it.size)
            }
}

val call = deckRepository.getAll()
                .flatMapIterable { item->item }
                .flatMapSingle {
                    mapper(it)
                }.toList()
                .toObservable()
                ...

创建一个新类

代码语言:javascript
复制
class DeckWithCards {

    @Embedded
    lateinit var deckEntity: DeckEntity

    @Relation(
            entity = CardEntity::class,
            entityColumn = "deckId",
            parentColumn = "id")
    lateinit var cards: List<CardEntity>

}

添加新的DeckDao

代码语言:javascript
复制
@Query("SELECT * from decks ORDER BY id ASC")
fun getAllWithCards(): Flowable<List<DeckWithCards>>
EN

回答 1

Stack Overflow用户

发布于 2018-08-14 14:44:56

用以下代码试试:

代码语言:txt
复制
@Entity(
  tableName = "cards",
  indices = {
    @Index(value = { "name", "deck_id" }, unique = true)
  }
)
public class CardEntity {

  //region Column Definitions

  @PrimaryKey
  @ColumnInfo(name = "id")
  private Long id;

  @NonNull
  @ColumnInfo(name = "name")
  private String name = "";

  @NonNull
  @ColumnInfo(name = "deck_id")
  private Long deckId = 0L;

  //endregion

  //region Getters and Setters

  (...)

  //endregion
}
代码语言:txt
复制
@Entity(tableName = "decks")
public class DeckEntity {

  //region Column Definitions

  @PrimaryKey
  @ColumnInfo(name = "id")
  private Long id;

  @NonNull
  @ColumnInfo(name = "name")
  private String name = "";

  //endregion

  //region Getters and Setters

  (...)

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

https://stackoverflow.com/questions/-100005976

复制
相关文章

相似问题

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