【发布时间】:2019-07-15 11:35:51
【问题描述】:
上周我遇到了一个奇怪的行为和回收站视图的新问题。 Recyclerview 直到滚动才显示项目,实际上,经过调试我知道onbindeViewHolder 在调用notifyDataSetChanged() 之后没有调用。
这是我的适配器代码:
class CalendarAdapter(val viewModel: CalendarViewModel) :
RecyclerView.Adapter<RecyclerView.ViewHolder>() {
private lateinit var items: List<RequestBookingBaseModel>
fun setData(data: List<RequestBookingBaseModel>) {
items = data
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return MyViewHolder
}
override fun getItemCount(): Int {
if (::items.isInitialized) {
return items.size
}
return 0
}
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
// do something
}
}
我的活动是这样的:
class CalendarFragment : BaseFragment() {
...
do something
...
fun showList(listOfItems : ArrayList<String>){
var adapter = CalendarAdapter(viewModel)
binding.dayPickerRecyclerView.adapter = adapter
binding.dayPickerRecyclerView.layoutManager = getLayoutManager()
adapter.setData(listOfItems)
}
}
而且,我的活动布局是:
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/dayPickerRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:clipToPadding="false"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
我认为适配器和活动一切正常,但是为什么直到上下滚动回收站视图才显示项目?
【问题讨论】:
标签: android android-recyclerview android-constraintlayout