class AlbumPreviewAdapter : RecyclerView.Adapter<AlbumPreviewAdapter.AlbumPreviewHolder> {
private var pictureUrlList: ArrayList<Uri>
private val mContext: Context
private var offset = ScreenUtil.dp2px(1).toInt()
constructor(context: Context, urlList: ArrayList<Uri>) {
mContext = context
this.pictureUrlList = urlList
}
override fun getItemCount(): Int {
return pictureUrlList.size
}
override fun onBindViewHolder(holder: AlbumPreviewHolder, position: Int) {
holder.bind(position)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AlbumPreviewHolder {
val view = LayoutInflater.from(mContext)
.inflate(R.layout.layout_item_album_preview, parent, false)
val itemWidth = ScreenUtil.screenWidth() / 4
val itemLayoutParams =
ViewGroup.LayoutParams(itemWidth, itemWidth)
view.layoutParams = itemLayoutParams
return AlbumPreviewHolder(view)
}
override fun getItemViewType(position: Int): Int {
return position
}
inner class AlbumPreviewHolder : RecyclerView.ViewHolder {
private var container: RelativeLayout
var previewImg: ImageView
var selectCheckBox:CheckBox
constructor(itemView: View) : super(itemView) {
this.container = itemView.findViewById(R.id.container)
this.previewImg = itemView.findViewById(R.id.preview_img)
this.selectCheckBox = itemView.findViewById(R.id.selectCheckBox)
}
fun bind(position: Int) {
addPadding(position)
Glide.with(mContext).load(pictureUrlList[position])
.into(previewImg)
previewImg.setOnClickListener {
selectCheckBox.isChecked = !selectCheckBox.isChecked
}
}
private fun addPadding(position: Int) {
when (position % 4) {
0 -> {
if (position < 4) {
container.setPadding(0, 0, offset, offset)
} else {
container.setPadding(0, offset, offset, offset)
}
}
1, 2 -> {
if (position < 4) {
container.setPadding(offset, 0, offset, offset)
} else {
container.setPadding(offset, offset, offset, offset)
}
}
3 -> {
if (position < 4) {
container.setPadding(offset, 0, 0, offset)
} else {
container.setPadding(offset, offset, 0, offset)
}
}
}
}
}
}