android - 我的 RecyclerView 没有显示任何东西
问题描述
我正在使用带有 Room 持久性和 livedata 的 MVVM。
我正在从本地数据库中获取数据,并希望在 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)
}
}
解决方案
推荐阅读
- python - 使用子进程从 input() 交互式运行多个命令
- c# - 使用 XAML 样式的 WPF 3d 按钮样式
- java - Selenium Java 为 element.isDisplayed 返回不正确的结果
- android - 无法启动活动 ComponentInfo。java.lang.NullPointerException:Firestore 组件不存在
- laravel - 我的 laravel+Vuejs2 应用程序最好的服务器或云托管是什么?
- r - 在绘图矩阵中添加多个 R^2 值的简单方法
- c# - 防止普通用户卸载我的 Windows 服务
- php - 如何在 ERD 图中实现“可以”关系?
- python - 熊猫如何检查列值之间的差异是否在每个组中的范围内
- ruby-on-rails - 在 RoR 中创建 CKAN 资源,以字符串形式提供文件内容