Closed FlodCoding closed 4 years ago
BannerAdapter是一个抽象类,你可以继承做任何操作,并不是让你自己使用
BannerAdapter是一个抽象类,你可以继承做任何操作,并不是让你自己使用
我是继承的,名字一样罢了
class BannerAdapter(list: List<BannerData>, private val onClick: ((BannerData) -> Unit)? = null) :
com.youth.banner.adapter.BannerAdapter<BannerData, BannerAdapter.BannerViewHolder>(list) {
override fun onCreateHolder(parent: ViewGroup, viewType: Int): BannerViewHolder {
val view = ImageView(parent.context).apply {
layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
)
}
return BannerViewHolder(view)
}
override fun onBindView(holder: BannerViewHolder, data: BannerData, position: Int, size: Int) {
bindLoadImageFromUrl(holder.view, data.image)
holder.itemView.setOnClickListener {
onClick?.invoke(data)
}
}
class BannerViewHolder(val view: ImageView) : RecyclerView.ViewHolder(view)
条件
当我设置一个Adapter的时候,传进去的数据是null
BUG描述
banner首先会空白很长一段时间,然后才出现图片开始自动滚动,而且设置了指示器,但是并没有显示出来。
问题
为什么Adapter不提供一个无参构造函数呢,而是需要传一个list进去, 我是想初始化的时候就设置adapter,获取到数据时才填充数据进去。 如果说获取数据后才构造一个adapter就会出现RecyclerView: No adapter attached; skipping layout的错误提示
附上代码