окно реселлера не отображается kotlin - PullRequest
0 голосов
/ 18 марта 2020

У меня есть recyclerView с 10 элементами. Моя главная цель - щелкнуть по элементу в списке и узнать, какова позиция списка. Я реализую код ниже, но при компиляции recyclerView не появляется.

MainActivity.kt

class MainActivity : AppCompatActivity(), PeopleInStarWarsAdapter.OnNoteListener {
    private lateinit var dataPeopleAdapter: PeopleInStarWarsAdapter
    private var listDataPeople = ArrayList<DataPeople>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val db = Room.databaseBuilder(this, AppDatabase::class.java, "database-name").build()
        doAsync {
            listDataPeople = db.dataPeopleDao().getAll() as ArrayList<DataPeople>
        }
        dataPeopleAdapter.submitList()
        initRecyclerView()
    }

    private fun initRecyclerView() {
        recycler_view.layoutManager = LinearLayoutManager(this)
        dataPeopleAdapter = PeopleInStarWarsAdapter(listDataPeople, this)
        recycler_view.adapter = dataPeopleAdapter
    }

    override fun onNoteClick(position: Int) {
        //i want the position in list here
        Log.d("Clicked!", "onNoteClick: $position")
    }
}

PeopleInStarWarsAdapter.kt

class PeopleInStarWarsAdapter(listDataPeople: ArrayList<DataPeople>, onNoteListener: OnNoteListener) : RecyclerView.Adapter<RecyclerView.ViewHolder>(){
    var listDataPeople = ArrayList<DataPeople>()
    private lateinit var mOnNoteListener : OnNoteListener

    fun PeopleInStarWarsAdapter(listDataPeople: ArrayList<DataPeople>, onNoteListener: OnNoteListener) {
        this.listDataPeople = listDataPeople
        mOnNoteListener = onNoteListener
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
        return ViewHolder(
            LayoutInflater.from(parent.context).inflate(
                R.layout.layout_list_item, parent,
                false)
        )
    }

    override fun getItemCount(): Int {
        return listDataPeople.size
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        when (holder) {
            is ViewHolder -> {
                holder.ViewHolder(listDataPeople[position], mOnNoteListener)
            }
        }
    }

    fun submitList() {
        notifyDataSetChanged()
    }

    class ViewHolder constructor(itemView: View): RecyclerView.ViewHolder(itemView), View.OnClickListener {
        val textViewName : TextView = itemView.textView_name
        var onNoteListener: OnNoteListener? = null

        fun ViewHolder(dataPeople: DataPeople, onNoteListener: OnNoteListener) {
            val name = dataPeople.name
            this.textViewName.text = name
            this.onNoteListener = onNoteListener
            itemView.setOnClickListener(this)
        }

        override fun onClick(v: View?) {
            onNoteListener?.onNoteClick(adapterPosition)
        }
    }

    interface OnNoteListener {
        fun onNoteClick(position: Int)
    }
}

Что я делаю неправильно в своем коде, так это то, что я проходил мимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...