RecyclerView适配器这里使用 Kotlin写的一个带有头布局的适配器也是属于万能适配器
实现代码
class RvHomeAdapter(var context: FragmentActivity?) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
var list:ArrayList<String> = ArrayList();
var tag= listOf("林允儿","林允儿","林允儿")
var images:ArrayList<Int> = ArrayList();
companion object{
val TYPE_TITLE = 0
val TYPE_SELLER = 1
}
override fun getItemViewType(position: Int): Int {
if (position == 0){
return TYPE_TITLE
}else{
return TYPE_SELLER
}
return super.getItemViewType(position)
}
override fun onBindViewHolder(p0: RecyclerView.ViewHolder, p1: Int) {
val viewtype = getItemViewType(p1)
when(viewtype){
TYPE_TITLE -> return (p0 as TitleHolder).inData("我是头布局")
TYPE_SELLER -> return (p0 as SellerHolder).inData(list[p1-1])
}
}
fun setData(data:ArrayList<String>){
this.list = data
notifyDataSetChanged()
}
fun setImage(data: ArrayList<Int>){
this.images = data
notifyDataSetChanged()
}
override fun getItemCount(): Int {
if (list.size>0){
return list.size+1
}else{
return 0
}
}
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): RecyclerView.ViewHolder {
when(p1){
TYPE_TITLE -> return TitleHolder(View.inflate(context, R.layout.item_title,null))
TYPE_SELLER -> return SellerHolder(View.inflate(context, R.layout.item_seller,null))
else -> return TitleHolder(View.inflate(context, R.layout.layout_item_rvhome,null))
}
}
inner class SellerHolder(item:View):RecyclerView.ViewHolder(item){
init {
}
fun inData(data : String){
}
}
inner class TitleHolder(item:View):RecyclerView.ViewHolder(item){
var banner:Banner
init {
banner =item.findViewById(R.id.banner)
banner.setImages(images)
banner.setImageLoader(object :ImageLoader(){
override fun displayImage(context: Context?, path: Any?, imageView: ImageView?) {
Glide.with(context).load(path).into(imageView)
}
})
banner.setBannerTitles(tag)
banner.setDelayTime(1000)
banner.start()
}
fun inData(data : String){
}
}
}