正在学第一行代码第三版,在recyclerView中,我想增加一个播放MP3的点击事件
Fruit.kt:
package android.example.recyclerviewtest
class Fruit(val name: String, val imageId: Int, val videoId: Int)
MainActivity.kt :
initFruits.add中的R.raw.**是先随意用的MP3文件
package android.example.recyclerviewtest
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
class MainActivity : AppCompatActivity() {
private val fruitList = ArrayList<Fruit>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initFruits()
val layoutManager = LinearLayoutManager(this)
val recyclerView:RecyclerView = findViewById(R.id.recyclerView)
recyclerView.layoutManager = layoutManager
val adapter = FruitAdapter(fruitList)
recyclerView.adapter = adapter
}
private fun initFruits() {
repeat(2) {
fruitList.add(Fruit("apple", R.drawable.apple_pic, R.raw.color_black))
fruitList.add(Fruit("banana", R.drawable.banana_pic, R.raw.color_brown))
fruitList.add(Fruit("orange", R.drawable.orange_pic, R.raw.color_dusty_yellow))
fruitList.add(Fruit("watermelon", R.drawable.watermelon_pic, R.raw.color_gray))
fruitList.add(Fruit("pear", R.drawable.pear_pic, R.raw.color_green))
fruitList.add(Fruit("grape", R.drawable.grape_pic, R.raw.color_mustard_yellow))
fruitList.add(Fruit("pineapple", R.drawable.pineapple_pic, R.raw.color_red))
fruitList.add(Fruit("strawberry", R.drawable.strawberry_pic, R.raw.color_white))
fruitList.add(Fruit("cherry", R.drawable.cherry_pic, R.raw.color_white))
fruitList.add(Fruit("mango", R.drawable.mango_pic, R.raw.family_father))
}
}
}
FruitAdapter.kt:
package android.example.recyclerviewtest
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import android.widget.VideoView
import androidx.recyclerview.widget.RecyclerView
class FruitAdapter(private val fruitList: List<Fruit>) :
RecyclerView.Adapter<FruitAdapter.ViewHolder>() {
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val fruitImage: ImageView = view.findViewById(R.id.fruitImage)
val fruitName: TextView = view.findViewById(R.id.fruitName)
val fruitButton:Button = view.findViewById(R.id.fruitMedia)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.fruit_item, parent, false)
val viewHold = ViewHolder(view)
viewHold.fruitImage.setOnClickListener {
val position = viewHold.bindingAdapterPosition
val fruit = fruitList[position]
Toast.makeText(parent.context, "你点击了${fruit.imageId}", Toast.LENGTH_SHORT).show()
}
viewHold.fruitName.setOnClickListener {
val position = viewHold.bindingAdapterPosition
val fruit = fruitList[position]
Toast.makeText(parent.context, "你点击了${fruit.name}", Toast.LENGTH_SHORT).show()
}
viewHold.fruitButton.setOnClickListener {
val position = viewHold.bindingAdapterPosition
val fruit = fruitList[position]
val mediaPlayer:MediaPlayer = MediaPlayer.create(parent.context, fruit.videoId)
mediaPlayer.start()
}
return viewHold
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val fruit = fruitList[position]
holder.fruitImage.setImageResource(fruit.imageId)
holder.fruitName.text = fruit.name
holder.fruitVideo.setRawInputType(fruit.videoId)
}
override fun getItemCount() = fruitList.size
}
运行结果及报错内容
尝试了好久,还是把点击播放MP3 事件弄好了,现在还差一个功能,在FruitAdapter
里,给fruitName这个TextView添加背景颜色,这个没什么头绪了。