gpt4 book ai didi

android - Kotlin fragment 中的API数据

转载 作者:行者123 更新时间:2023-12-02 13:33:40 26 4
gpt4 key购买 nike

我正在尝试使用Drawer activity,似乎它有3个文件可以将简单文本显示为This is home Fragment:|

无论如何,我已经跟踪了所有这些文件,并找到了fragment_home.xmlHomeFragment.ktHomeViewModel.kt

Question

How should I call for API data trough fragments?




my code
基于 android studio documentation,这是我应该用来获取api数据的代码。
val textView = findViewById<TextView>(R.id.TextView)

// Instantiate the RequestQueue.
val queue = Volley.newRequestQueue(this)
val url = "https://example.com/api/listings"

// Request a string response from the provided URL.
val stringRequest = StringRequest(
Request.Method.GET, url,
Response.Listener<String> { response ->
// Display the first 500 characters of the response string.
textView.text = "Response is: ${response.substring(0, 500)}"
},
Response.ErrorListener { textView.text = "That didn't work!" })

// Add the request to the RequestQueue.
queue.add(stringRequest)

PS: I have tried this code above in empty activity it's working


HomeViewModel.kt
class HomeViewModel : ViewModel() {

private val _text = MutableLiveData<String>().apply {
value = "This is home Fragment"
}
val text: LiveData<String> = _text
}
HomeFragment.kt
class HomeFragment : Fragment() {

private lateinit var homeViewModel: HomeViewModel

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
homeViewModel =
ViewModelProviders.of(this).get(HomeViewModel::class.java)
val root = inflater.inflate(R.layout.fragment_home, container, false)
val textView: TextView = root.findViewById(R.id.text_home)
homeViewModel.text.observe(this, Observer {
textView.text = it
})
return root
}
}
fragment_home.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">

<TextView
android:id="@+id/text_home"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:textAlignment="center"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

Please note, before you try to give down-vote: I am aware this question probably is very basic question, but note that it's my first time ever using fragments (basically newbie in android studio), so yes my questions are kind of basic :)

最佳答案

从片段调用API,您可以

class HomeFragment : Fragment() {

private lateinit var homeViewModel: HomeViewModel

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
homeViewModel = ViewModelProviders.of(this).get(HomeViewModel::class.java)

val root = inflater.inflate(R.layout.fragment_home, container, false)

val textView: TextView = root.findViewById(R.id.text_home)

//calling the API
callAPIDemo(textView)

// homeViewModel.text.observe(this, Observer {
// textView.text = it
// })

return root
}

fun callAPIDemo(textView: TextView) {
// Instantiate the RequestQueue.
val queue = Volley.newRequestQueue(activity)
val url = "https://example.com/api/listings"

// Request a string response from the provided URL.
val stringRequest = StringRequest(
Request.Method.GET, url,
Response.Listener<String> { response ->
// Display the first 500 characters of the response string.
textView.text = "Response is: ${response.substring(0, 500)}"
},
Response.ErrorListener { textView.text = "That didn't work!" })

// Add the request to the RequestQueue.
queue.add(stringRequest)
}

}

关于android - Kotlin fragment 中的API数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60096397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com