package oppen.gem.ui.bookmarks import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.bookmark.view.* import oppen.gem.R import oppen.gem.io.bookmarks.Bookmark class BookmarksAdapter(val onBookmark: (bookmark: Bookmark) -> Unit, val onOverflow: (view: View, bookmark: Bookmark, isFirst: Boolean, isLast: Boolean) -> Unit): RecyclerView.Adapter() { val bookmarks = mutableListOf() class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) fun update(bookmarks: List){ this.bookmarks.clear() this.bookmarks.addAll(bookmarks) notifyDataSetChanged() } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return ViewHolder( LayoutInflater.from(parent.context).inflate(R.layout.bookmark, parent, false) ) } override fun onBindViewHolder(holder: ViewHolder, position: Int) { val bookmark = bookmarks[position] holder.itemView.bookmark_name.text = bookmark.label holder.itemView.bookmark_uri.text = bookmark.uri.toString() holder.itemView.bookmark_layout.setOnClickListener { onBookmark(bookmarks[holder.adapterPosition]) } holder.itemView.bookmark_overflow.setOnClickListener {view -> val isFirst = (holder.adapterPosition == 0) val isLast = (holder.adapterPosition == bookmarks.size -1) onOverflow(view, bookmarks[holder.adapterPosition], isFirst, isLast) } } override fun getItemCount(): Int = bookmarks.size }