我的RecyclerView没有显示任何内容

时间:2019-10-02 17:18:07

标签: android kotlin android-recyclerview android-room android-mvvm

我将MVVM与Room Persistence和livedata一起使用。
我正在从本地数据库中获取数据,并希望以列表的形式显示在recyclerView中,而我的recyclerView没有显示任何内容。
我的适配器就像其他常规适配器一样

RecyclerView代码

class MyInformationAdapter : RecyclerView.Adapter<MyInformationAdapter.ViewHolder>() {

    private var myList: List<PersonInformation> = ArrayList()

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val layoutInflater = LayoutInflater.from(parent.context)
        val view = layoutInflater.inflate(R.layout.my_adapter_data, parent, false)
        return ViewHolder(view)
    }

    override fun getItemCount(): Int = myList.size

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        var myDataClass: PersonInformation = myList[position]
        holder.name.text = myDataClass.name
        holder.fName.text = myDataClass.fatherName
        holder.email.text = myDataClass.email
        holder.contact.text = myDataClass.contactNo.toString()
    }

    fun updateTheState(myList: List<PersonInformation>){
        this.myList = myList
        notifyDataSetChanged()
    }

    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

        var name: TextView = itemView.findViewById(R.id.yourName)
        var fName: TextView = itemView.findViewById(R.id.yourFatherName)
        var email: TextView = itemView.findViewById(R.id.yourEmail)
        var contact: TextView = itemView.findViewById(R.id.yourContact)


    }
}


RecyclerView活动代码


class FinalActivity : AppCompatActivity() {


    private var myDataList : List<PersonInformation> = ArrayList()

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

    }

    private fun setAdapter() {
        val adapter = MyInformationAdapter()
        val layoutManager = LinearLayoutManager(this)
        recyclerView.layoutManager = layoutManager
        recyclerView.adapter = adapter
        adapter.updateTheState(myDataList)


    }
}


*片段作为MVVM的视图*

class PersonalInformationFragment : Fragment() {

    private var viewModel: PersonInformationViewModel? = null

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_personal_information, container, false)


    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        btn.setOnClickListener {
            viewModel = ViewModelProviders.of(this)[PersonInformationViewModel::class.java]
            viewModel?.getAllData()?.observe(this, Observer {
                this.setAllData(it)
            })
            val intent = Intent(activity, FinalActivity::class.java)
            startActivity(intent)
        }
    }

    private fun setAllData(personInformation: List<PersonInformation>) {
        val setData = PersonInformation(
            name.text.toString(),
            fName.text.toString(),
            email.text.toString(),
            contact.text.toString().toInt()
        )
        viewModel?.setTheData(setData)
    }
}

0 个答案:

没有答案