![](/img/trans.png)
[英]How to display rating value(Integer) from an API (Google api) using ratings bar in Android (preferably using Kotlin)?
[英]rate stars in rating bar | kotlin
我是 kotlin 的新手,我需要幫助。 我有 5 星列表(如評分欄),想要嗎? 例如,當您單擊 3d 星前兩個更改顏色時? 我怎樣才能用循環寫它? 如果/否則? 我希望你能幫助我! 謝謝!!
任務:
// Input - get elements or number or other data
// list of stars (items and index of items)
// rating number (x/5) (number of clicked star)
//
// Loops - FOR - iterate over elements
// Conditions - IF/ELSE - what to do with element
// Action:
// loop over stars (star & indexOfStar)
// set color: (yellow for start behind chosen one including chosen one (rating number))
有這個代碼:
val star1: ImageView = binding.star1
binding.star1.setOnClickListener {
Log.d("Star 1","Rate 1")
star1.setImageDrawable(ContextCompat.getDrawable(star1.context, com.example.godelreviews.R.drawable.star2))}
val star2: ImageView = binding.star2
binding.star2.setOnClickListener {
Log.d("Star 2","Rate 2")
star2.setImageDrawable(ContextCompat.getDrawable(star1.context, com.example.godelreviews.R.drawable.star2))}
val star3: ImageView = binding.star3
binding.star3.setOnClickListener {
Log.d("Star 3","Rate 3")
star3.setImageDrawable(ContextCompat.getDrawable(star1.context, com.example.godelreviews.R.drawable.star2))}
val star4: ImageView = binding.star4
binding.star4.setOnClickListener {
Log.d("Star 4","Rate 4")
star4.setImageDrawable(ContextCompat.getDrawable(star1.context, com.example.godelreviews.R.drawable.star2))}
val star5: ImageView = binding.star5
binding.star5.setOnClickListener {
Log.d("Star 5","Rate 5")
star5.setImageDrawable(ContextCompat.getDrawable(star1.context, com.example.godelreviews.R.drawable.star2))}
return binding.root
}
private fun onRatingChanged(rating: Int){
Log.d("AddPage", "onRatingChanged: $rating/5")
}
private fun getStarRating(): Int{
TODO("Implement")
}
}
現在看起來像這樣:
但我想像這樣標記其他明星:
因為這看起來像家庭作業,我不會告訴你怎么做,但你發布的說明真的很有幫助!
行動:
- 循環星星(star & indexOfStar)
- 設置顏色:(黃色表示選擇一個后面的開始,包括選擇一個(評級編號))
這就是說你需要遍歷所有的星星。 如果當前星是被選中的,或者在被選中的之前,則需要將其設置為黃色。 否則,您需要將其設置為灰色或其他。
每當當前選定的星發生變化時,您都需要執行此操作 - 因此,將此循環放在 function 中是有意義的,您可以在發生這種情況時調用。 這樣,您的點擊監聽器所要做的就是設置當前星級,並調用更新顯示的 function。
你已經有一個 function 聲明,看起來很像這樣:
private fun onRatingChanged(rating: Int){
...
}
它被稱為onRatingChanged
並采用rating
值。 您如何對該存儲進行評級(如有必要),然后遍歷您的星ImageView
,更新每個星號以顯示適當的星號? 然后,您的點擊偵聽器可以使用適當的評級值來調用它。
像這樣修改您的代碼,它可能對您有用-
binding.star1.setOnClickListener {
Log.d("Star 2","Rate 2")
binding.star1.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))}
binding.star2.setOnClickListener {
Log.d("Star 2","Rate 2")
binding.star1.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))
binding.star2.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))}
binding.star3.setOnClickListener {
Log.d("Star 3","Rate 3")
binding.star1.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))
binding.star2.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))
binding.star3.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))}
binding.star4.setOnClickListener {
Log.d("Star 4","Rate 4")
binding.star1.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))
binding.star2.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))
binding.star3.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))
binding.star4.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))}
binding.star5.setOnClickListener {
Log.d("Star 5","Rate 5")
binding.star1.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))
binding.star2.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))
binding.star3.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))
binding.star4.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))
binding.star5.setImageDrawable(ContextCompat.getDrawable(binding.star1.context, com.example.godelreviews.R.drawable.star2))}
return binding.root
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.