Bonjour,
Je cherche à surveiller les changements dans les editview placés dans un recyclerview. Cependant je ne comprends pas trop où placer le setOnclickListener sachant que à mon avis, il faudrait le placer dans le main activity mais je n'ai pas encore une connaissance suffisante du langage pour comprendre comment faire (ou alors je me trompe).
J'ai fait des essais en le plaçant dans le oncreateviewholder ou le onbindviewholder mais cela déclenche directement la fonction placée dans l'écouteur, sans attendre un changement dans le edit text.
Qu'en pensez-vous ? Merci à vous![]()
Voici mon code :
L'adapter :
Le main activity
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 import android.annotation.SuppressLint import android.content.Context import android.text.Editable import android.text.TextWatcher import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.EditText import android.widget.TextView import android.widget.Toast import androidx.recyclerview.widget.RecyclerView import java.util.logging.Logger open class CustomAdapter(private val data: List<String>, private val activity: MainActivity) : RecyclerView.Adapter<CustomAdapter.ViewHolder>() { internal lateinit var list: List<String> override fun onCreateViewHolder( parent: ViewGroup, viewType: Int ): ViewHolder { val rowItem: View = LayoutInflater.from(parent.context).inflate(R.layout.list_item_view, parent, false) var myview= ViewHolder(rowItem) return myview } override fun onBindViewHolder( holder: ViewHolder, position: Int ) { holder.editText.setText(data[position]) } override fun getItemCount(): Int { return data.size } inner class ViewHolder(rowItem: View) : RecyclerView.ViewHolder(rowItem) { val editText : EditText= rowItem.findViewById(R.id.editText) val editText2 : EditText= rowItem.findViewById(R.id.editText2) fun setOnClickListener() { editText.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(p0: Editable?) { } override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { } override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { activity.fonction() } }) } init { } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val recyclerView = findViewById<RecyclerView>(R.id.recycler_view) recyclerView.layoutManager = LinearLayoutManager(this) recyclerView.adapter = CustomAdapter(generateData(),this) recyclerView.addItemDecoration(DividerItemDecoration(this, DividerItemDecoration.VERTICAL)) var textView2: TextView textView2 = findViewById(R.id.textView) var editText : EditText } fun clickEditText1(list:String, str: String, pos: Int){ var textView2: TextView textView2 = findViewById(R.id.textView) textView2.setText("!!!!!!")} fun fonction () { var textView2: TextView textView2 = findViewById(R.id.textView) textView2.text="!!!!!!" } private fun generateData(): List<String> { val data: MutableList<String> = ArrayList() for (i in 0..99) { data.add(i.toString() + "th Element") } return data } } //}
Partager