小编Jon*_*nny的帖子

如何解决“add all in list 无法应用到”

我有这个方法:

filteredListIn.addAll(Stream.of(listRef)
    .filter(results ->
            results.getTitle().contains(query.toString().toLowerCase())
     ));
Run Code Online (Sandbox Code Playgroud)

有了这两个变量:

private List<Results> listRef = new ArrayList<>();
List<Results> filteredListIn = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

但我得到

为 addAll(Stream) 找到了已过滤的ListIn.addAll(Stream.of(listRef) ^ 方法 Collection.addAll(Collection) 不适用(参数不匹配;Stream 无法转换为 Collection)方法 List.addAll(Collection) 不适用

有什么问题,我该如何解决?

这可能是因为我使用外部库来支持 api 24 下的流吗?

java android java-stream

11
推荐指数
2
解决办法
539
查看次数

如何使用 Flows 处理数据库调用错误

通常我从我的 dao 挂起功能返回:

@Dao
interface DataDao {
    @Query("SELECT * FROM data")
    fun getAllData(): List<Data>
}
Run Code Online (Sandbox Code Playgroud)

并处理存储库中的调用:

class DataRepository(
    private val dataDao: DataDao
) {
    fun getAllData(): Flow<DataState> = flow {
        val cacheResult = safeDatabaseCall(dispatcher = Dispatchers.IO) { dataDao.getAllData() }

    //handle cacheResult, convert to DataState, emit DataState values

    }.flowOn(Dispatchers.IO)
Run Code Online (Sandbox Code Playgroud)

}

带着一般的乐趣:

suspend fun <T> safeDatabaseCall(
    dispatcher: CoroutineDispatcher,
    cacheCall: suspend () -> T?
): CacheResult<T?> {
    return withContext(dispatcher) {
        try {
            withTimeout(10000L) {
                CacheResult.Success(cacheCall.invoke())
            }
        } catch (t: Throwable) {
            when (t) …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-room kotlin-coroutines

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