1
1
package ee.ioc.phon.android.speak.adapter
2
2
3
3
import android.content.ComponentName
4
+ import android.graphics.Paint
4
5
import android.os.Build
5
6
import android.view.LayoutInflater
6
7
import android.view.View
@@ -11,8 +12,11 @@ import ee.ioc.phon.android.speak.R
11
12
import ee.ioc.phon.android.speak.ServiceLanguageChooser
12
13
import ee.ioc.phon.android.speak.model.Combo
13
14
14
- class ComboButtonsAdapter (private val mListener : ComboButtonsAdapterListener , private val mSlc : ServiceLanguageChooser ) : RecyclerView.Adapter<ComboButtonsAdapter.MyViewHolder>() {
15
- private lateinit var mSelectedView: View
15
+ class ComboButtonsAdapter (
16
+ private val mListener : ComboButtonsAdapterListener ,
17
+ private val mSlc : ServiceLanguageChooser
18
+ ) : RecyclerView.Adapter<ComboButtonsAdapter.MyViewHolder>() {
19
+ private lateinit var mSelectedView: Button
16
20
17
21
interface ComboButtonsAdapterListener {
18
22
fun onComboChange (language : String , service : ComponentName )
@@ -22,8 +26,10 @@ class ComboButtonsAdapter(private val mListener: ComboButtonsAdapterListener, pr
22
26
class MyViewHolder (var mView : Button ) : RecyclerView.ViewHolder(mView)
23
27
24
28
override fun onCreateViewHolder (parent : ViewGroup , viewType : Int ): MyViewHolder {
25
- return MyViewHolder (LayoutInflater .from(parent.context)
26
- .inflate(R .layout.list_item_combo_button, parent, false ) as Button )
29
+ return MyViewHolder (
30
+ LayoutInflater .from(parent.context)
31
+ .inflate(R .layout.list_item_combo_button, parent, false ) as Button
32
+ )
27
33
}
28
34
29
35
override fun onBindViewHolder (holder : MyViewHolder , position : Int ) {
@@ -38,9 +44,13 @@ class ComboButtonsAdapter(private val mListener: ComboButtonsAdapterListener, pr
38
44
val combo = Combo (context, mSlc[position])
39
45
if (mSlc.isSelected(position)) {
40
46
mSelectedView = holder.mView
41
- holder.mView.alpha = 1f
47
+ mSelectedView.alpha = 1f
48
+ mSelectedView.paintFlags = mSelectedView.paintFlags or Paint .UNDERLINE_TEXT_FLAG
49
+ mSelectedView.isClickable = false
42
50
} else {
43
51
holder.mView.alpha = 0.5f
52
+ holder.mView.paintFlags = 0
53
+ holder.mView.isClickable = true
44
54
}
45
55
var label = combo.localeAsStr
46
56
if (label.isEmpty() || label.equals(" und" )) {
@@ -50,13 +60,17 @@ class ComboButtonsAdapter(private val mListener: ComboButtonsAdapterListener, pr
50
60
if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .O ) {
51
61
holder.mView.tooltipText = combo.longLabel
52
62
}
53
- // TODO: selected button should not be clickable
63
+
54
64
holder.mView.setOnClickListener { view: View ->
55
65
if (! mSlc.isSelected(position)) {
56
66
mSlc.set(position)
57
67
mSelectedView.alpha = 0.5f
58
- mSelectedView = view
68
+ mSelectedView.paintFlags = 0
69
+ mSelectedView.isClickable = true
70
+ mSelectedView = view as Button
59
71
mSelectedView.alpha = 1f
72
+ mSelectedView.paintFlags = holder.mView.paintFlags or Paint .UNDERLINE_TEXT_FLAG
73
+ mSelectedView.isClickable = false
60
74
mListener.onComboChange(mSlc.language, mSlc.service)
61
75
}
62
76
}
0 commit comments