我正在创建一个记忆游戏应用程序。这是我的代码。第一个代码是 MemoryBoardAdapter。
```package com.example.memory
import android.content.Context
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageButton
import androidx.recyclerview.widget.RecyclerView
import androidx.cardview.widget.CardView
import com.example.memory.models.BoardSize
import java.lang.Math.min
class MemoryBoardAdapter(private val Context: Context, private val boardSize: BoardSize, private val cardImages: List<Int>) :
RecyclerView.Adapter<MemoryBoardAdapter.ViewHolder>() {
companion object {
private const val MARGIN_SIZE = 10
private const val TAG = "MemoryBoardAdapter"
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val cardWidth = parent.width/boardSize.getWidth() - (2 * MARGIN_SIZE)
val cardHeight = parent.height/boardSize.getHeight() - (2 * MARGIN_SIZE)
val cardSideLength = min(cardWidth, cardHeight)
val view = LayoutInflater.from(Context).inflate(R.layout.memory_card, parent, false)
val layoutParams = view.findViewById<CardView>(R.id.cardView).layoutParams as ViewGroup.MarginLayoutParams
layoutParams.width = cardSideLength
layoutParams.height = cardSideLength
layoutParams.setMargins(MARGIN_SIZE, MARGIN_SIZE, MARGIN_SIZE, MARGIN_SIZE)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(position)
}
override fun getItemCount() = boardSize.numCards
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val imageButton = itemView.findViewById<ImageButton>(R.id.imageButton)
fun bind(position: Int) {
imageButton.setImageResource(cardImages[position])
imageButton.setOnClickListener{
Log.i(TAG,"Clisked on position $position")
}
}
}
}```
这是主要活动。
```package com.example.memory
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.memory.models.BoardSize
import com.example.memory.utils.DEFAULT_ICONS
class MainActivity : AppCompatActivity() {
private lateinit var rvBoard: RecyclerView
private lateinit var tvNumMoves: TextView
private lateinit var tvNumPairs: TextView
private var boardSize: BoardSize = BoardSize.MEDIUM
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
rvBoard = findViewById(R.id.rvBoard)
tvNumMoves = findViewById(R.id.tvNumMoves)
tvNumPairs = findViewById(R.id.tvNumPairs)
val chosenImages = DEFAULT_ICONS.shuffled().take(boardSize.getNumPairs())
val randomizedImages = (chosenImages + chosenImages).shuffled()
rvBoard.adapter = MemoryBoardAdapter(this,boardSize,randomizedImages)
rvBoard.setHasFixedSize(true)
rvBoard.layoutManager = GridLayoutManager(this,boardSize.getWidth())
}
}```
我的错误发生在这个 Constants.kt 文件中。此处该方法listOf()
未实现并显示错误。它要求重命名引用或创建一个函数。如果我创建一个函数,它会在主要活动中显示错误。
```package com.example.memory.utils
import com.example.memory.R
val DEFAULT_ICONS = listOf(
R.drawable.cloud,
R.drawable.dining,
R.drawable.eye,
R.drawable.face,
R.drawable.flight,
R.drawable.friends,
R.drawable.heart,
R.drawable.key,
R.drawable.phone,
R.drawable.rewind,
R.drawable.star,
R.drawable.volume
)```
如何解决这个错误?