如何从 url 获取 json 并将其数据添加到 Jetpack Compose 中的 Text Composable
这里是json文件 https://jsonplaceholder.typicode.com/posts
@Composable
fun Api(){
val queue = Volley.newRequestQueue(LocalContext.current)
val url = "https://jsonplaceholder.typicode.com/posts"
val jsonObjectRequest = JsonObjectRequest(
Request.Method.GET, url,null,
{ response ->
val title = response.getString("title")
print(title)
},
{ error ->
print(error.localizedMessage)
})
queue.add(jsonObjectRequest)
}
答案 0 :(得分:0)
只需在视图模型中获取您想要的数据即可。然后,将其存储在一个变量中,例如 var data by mutableStateOf("")
然后通过文本 Composable 中的视图模型访问此变量。像普通字符串一样更新这个变量会触发重组
根据以下评论进行编辑:-
虽然没有必要将其存储在视图模型中,但这是推荐的最佳实践。您还可以使用 remember
(不推荐用于重要状态存储)
但是,对于视图模型,我的意思是,
class mViewModel: ViewModel(){
var data by mutableStateOf("")
private set //only viewmodel can modify values
fun onLoadData(){
data = //json extraction logic
}
fun onDataChange(newData: String){
data = newData
}
}
然后,在您的活动中,
class mActiviry: AppCompatActivity(){
val vm by viewmodels<mViewModel>() //See docs for better approaches of initialisation
//...
setContent {
Text(vm.data)
}
}
完成
编辑:-
或者,放弃 onDataLoad()
class mViewModel: ViewModel(){
var data by mutableStateOf("")
private set //only viewmodel can modify values
init{
data = // code from the "Api" method in your question
}
fun onDataChange(newData: String){
data = newData
}
}