Getter устарел после преобразования кода в Kotlin - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь установить некоторые значения для некоторых свойств диалога на основе позиции элемента списка и только что преобразовал некоторый код из Java в Kotlin, но по какой-то причине все экземпляры myList[position] в прослушивателе щелчков возвращают эту ошибку:

'метод получения позиции: Int' устарел.Устаревший в Java.

Однако для onBindViewHolder Какая альтернатива может быть использована для устранения этой ошибки?

class MyRVAdapter(private val myList: ArrayList<Item>) : RecyclerView.Adapter<MyRVAdapter.ViewHolder>() {
    override fun getItemCount(): Int {
        return myList.size
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.myBtn.text = (myList[position].textBtnTitle)
     }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val v = LayoutInflater.from(parent.context).inflate(R.layout.my_cv, parent, false)

        return ViewHolder(v)
    }

    class ViewHolder (itemView : View):RecyclerView.ViewHolder(itemView) {
        val myBtn = itemView.findViewById<Button>(R.id.btn_a)!!

        init {
            myBtn.setOnClickListener {
                val builder = AlertDialog.Builder(myBtn.context)
                builder.setTitle(myList[position].txtDialogTitle)
                builder.setMessage(myList[position].txtDialogMessage)
                builder.setPositiveButton(android.R.string.ok){ dialog, _ -> dialog.dismiss() }

                val dialog: AlertDialog = builder.create()
                dialog.show()
            }
        }
    }
}

1 Ответ

0 голосов
/ 01 марта 2019

Я предполагаю, что вы говорите о ссылках на position внутри вашего класса ViewHolder.

Вместо этого используйте adapterPosition.Эквивалент Java - getAdapterPosition().Если вы использовали getPosition() в Java, возможно, вы отключили предупреждение об устаревании.

...