inner
class
ViewHolder(itemView: View,
private
val listener: ItemClickListener) : RecyclerView.ViewHolder(itemView) {
var title: TextView = findViewById(R.id.ry_title)
var desc: TextView = findViewById(R.id.ry_desc)
init {
itemView.setOnLongClickListener(object : View.OnLongClickListener {
override fun onLongClick(v: View): Boolean {
val pos = adapterPosition
if
(pos != RecyclerView.NO_POSITION) {
listener.onItemClicked(pos);
return
false
;
}
return
true
;
}
})
itemView.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View?) {
val pos = adapterPosition
if
(pos != RecyclerView.NO_POSITION) {
listener.onItemClicked(pos);
}
})
}
fun bindItem(item: YourType) {
}
private
fun <T: View> findViewById(
@IdRes
id: Int): T = itemView.findViewById(id)
}
fun
interface
ItemClickListener {
fun onItemClicked(position: Int)
}
class
Adapter : ItemClickListener {
private
var previousPosition =-
1
private
var currentPosition = =
1
;
override fun onItemClicked(position: Int) {
items.getOrNull(previousPostion)?.selected =
false
;
items.getOrNull(position)?.selected =
true
;
notifyItemChanged(previousPosition);
notifyItemChanged(position);
previousPosition = currentPosition;
currentPosition = position;
}
override fun onCreateViewHolder(parent: ViewGroup, viewType:Int): ViewHolder {
val itemView = ...
ViewHolder(itemView,
this
@Adapter
)
}
override fun onBindViewHolder(vh: ViewHolder, position: Int) {
vh.bindItem(getItem[position])
}
}