parent
c343fb9d28
commit
0c48dcf06c
11 changed files with 209 additions and 58 deletions
|
|
@ -19,22 +19,26 @@ import android.view.LayoutInflater
|
|||
import android.view.MotionEvent
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.keylesspalace.tusky.HASHTAG
|
||||
import com.keylesspalace.tusky.R
|
||||
import com.keylesspalace.tusky.TabData
|
||||
import com.keylesspalace.tusky.util.ThemeUtils
|
||||
import com.keylesspalace.tusky.util.hide
|
||||
import com.keylesspalace.tusky.util.show
|
||||
import kotlinx.android.synthetic.main.item_tab_preference.view.*
|
||||
|
||||
|
||||
interface ItemInteractionListener {
|
||||
fun onTabAdded(tab: TabData)
|
||||
fun onStartDelete(viewHolder: RecyclerView.ViewHolder)
|
||||
fun onStartDrag(viewHolder: RecyclerView.ViewHolder)
|
||||
fun onActionChipClicked(tab: TabData)
|
||||
}
|
||||
|
||||
class TabAdapter(var data: List<TabData>,
|
||||
val small: Boolean = false,
|
||||
val listener: ItemInteractionListener? = null) : RecyclerView.Adapter<TabAdapter.ViewHolder>() {
|
||||
class TabAdapter(private var data: List<TabData>,
|
||||
private val small: Boolean = false,
|
||||
private val listener: ItemInteractionListener? = null) : RecyclerView.Adapter<TabAdapter.ViewHolder>() {
|
||||
|
||||
fun updateData(newData: List<TabData>) {
|
||||
this.data = newData
|
||||
|
|
@ -42,7 +46,7 @@ class TabAdapter(var data: List<TabData>,
|
|||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
val layoutId = if(small) {
|
||||
val layoutId = if (small) {
|
||||
R.layout.item_tab_preference_small
|
||||
} else {
|
||||
R.layout.item_tab_preference
|
||||
|
|
@ -52,26 +56,43 @@ class TabAdapter(var data: List<TabData>,
|
|||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
val context = holder.itemView.context
|
||||
holder.itemView.textView.setText(data[position].text)
|
||||
val iconDrawable = ThemeUtils.getTintedDrawable(holder.itemView.context, data[position].icon, android.R.attr.textColorSecondary)
|
||||
val iconDrawable = ThemeUtils.getTintedDrawable(context, data[position].icon, android.R.attr.textColorSecondary)
|
||||
holder.itemView.textView.setCompoundDrawablesRelativeWithIntrinsicBounds(iconDrawable, null, null, null)
|
||||
if(small) {
|
||||
if (small) {
|
||||
holder.itemView.textView.setOnClickListener {
|
||||
listener?.onTabAdded(data[position])
|
||||
}
|
||||
}
|
||||
holder.itemView.imageView?.setOnTouchListener { _, event ->
|
||||
if(event.action == MotionEvent.ACTION_DOWN) {
|
||||
if (event.action == MotionEvent.ACTION_DOWN) {
|
||||
listener?.onStartDrag(holder)
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
if (!small) {
|
||||
|
||||
if (data[position].id == HASHTAG) {
|
||||
holder.itemView.chipGroup.show()
|
||||
holder.itemView.actionChip.text = data[position].arguments[0]
|
||||
|
||||
holder.itemView.actionChip.setChipIconResource(R.drawable.ic_edit_chip)
|
||||
|
||||
holder.itemView.actionChip.chipIcon = context.getDrawable(R.drawable.ic_edit_chip)
|
||||
holder.itemView.actionChip.setOnClickListener {
|
||||
listener?.onActionChipClicked(data[position])
|
||||
}
|
||||
|
||||
} else {
|
||||
holder.itemView.chipGroup.hide()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return data.size
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue