【发布时间】:2021-10-28 04:02:47
【问题描述】:
我使用 kotlin 语言使用数据绑定实现了一个简单的 recyclerview。 在xml中,recyclerview似乎是默认的, 但是当我运行它时,它不会显示为默认值。 执行时片段中包含的其他按钮和视图正常显示,但只有recyclerview不可见。哪一部分错了?
class WorkFragment : Fragment() {
private var _binding: FragmentWorkBinding? = null
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentWorkBinding.inflate(inflater, container, false)
val view = binding.root
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val data = mutableListOf<WorkList>()
val adapter = WorkAdapter()
adapter.data = data
binding.recycler1.adapter = adapter
binding.recycler1.layoutManager = LinearLayoutManager(requireContext())
}
}
class WorkAdapter : RecyclerView.Adapter<WorkAdapter.ViewHolder>() {
var data = mutableListOf<WorkList>()
class ViewHolder(val binding: RecyclerviewWorkItemBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(workList: WorkList) {
binding.tvStarttime.text = workList.Starttime
binding.tvAdmin.text = workList.Admin
binding.tvPart.text = workList.Part
binding.tvStoptime.text = workList.Stoptime
binding.tvWorkers.text = workList.Workers.toString()
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): WorkAdapter.ViewHolder {
val binding = RecyclerviewWorkItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return ViewHolder(binding)
}
override fun onBindViewHolder(holder: WorkAdapter.ViewHolder, position: Int) {
holder.bind(data[position])
}
override fun getItemCount(): Int {
return data.size
}
// fun replaceList(newList: MutableList<WorkList>) {
// data = newList.toMutableList()
// notifyDataSetChanged()
// }
}
我的代码有问题吗? 作为参考,我只使用了一个片段,而不是一个活动。
【问题讨论】:
-
因为您将一个空列表传递给适配器。所以你的 reyclerview 没有出现。
-
我不明白空列表是什么意思。我需要修改 main 吗?
-
我在 wow 片段中输入了每个数据值,看起来很正常。这似乎是我的基本错误。感谢您的评论。
标签: android kotlin android-fragments android-recyclerview data-binding