我有一个 http 响应,其主体是 ByteReadChannel。我知道内容是 JSON 对象数组。我需要通过 JSON 对象的属性来过滤该响应主体。由于数组...
我有一个 http 响应,其主体是 ByteReadChannel
。我知道内容是一个 JSON
对象数组。我需要根据对象的属性过滤该响应主体 JSON
。由于该数组可能包含至少数千个对象,因此我希望避免将整个内容读入内存,应用我的过滤器并将结果发送到客户端。
我怎样才能将其转换 ByteReadChannel
为,比如说, Flow<MyJsonObject>
流上的过滤器? Flow
这只是一个例子,也许有更好的类可以使用......
附言:我用 Ktor
.
我正在尝试创建简单的 Dice Roller JetPack Compose 应用程序。我创建了一个图像组合和按钮组合。每当我单击按钮时,日志语句都会显示按钮被单击,但我无法向上...
我正在尝试创建简单的 Dice Roller JetPack Compose App。我创建了一个图像组合和按钮组合。每当我单击按钮时,日志语句都会显示按钮被单击,但我无法根据该数据更新骰子图像。我将附上我的代码以供将来参考。我做错了什么?
package com.example.mydiceroller
import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.lifecycle.ViewModelProvider
class MainActivity : ComponentActivity() {
lateinit var mainViewModel: MainViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
mainViewModel = ViewModelProvider(this).get(MainViewModel::class.java)
Column(
modifier = Modifier
.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
DiceImage(count = mainViewModel.count)
Button(onClick = {
mainViewModel.rollDice()
}
)
{
Text(text = "Let's Roll")
}
}
}
}
}
@Composable
fun DiceImage(count: Int) {
Log.d("countValue", "${count}")
var countId=when (count) {
1 -> R.drawable.dice_1
2 -> R.drawable.dice_2
3 -> R.drawable.dice_3
4 -> R.drawable.dice_4
5 -> R.drawable.dice_5
else -> R.drawable.dice_6
}
Image(
painter = painterResource(id = countId), contentDescription = ""
)
}
MainViewModel.kt
package com.example.mydiceroller
import android.util.Log
import androidx.lifecycle.ViewModel
import java.util.Random
class MainViewModel : ViewModel() {
var count: Int = 1
fun rollDice(): Int {
count = (Random().nextInt(6) + 1)
Log.d("ViewModel", "ButtonClicked")
return count
}
}
我也尝试了 mutableStateOf 但失败了