我如何遍历 gridView 基础适配器来检查上面的文本?
How can I iterate through a gridView base adapter to check the text on it?
我尝试过不同的方法,几个星期以来我一直在尝试这样做。
我也尝试在适配器中添加代码,我考虑过使用 sqlite,但我不知道该怎么做。
我只想检查一个条件,如果这个字符串存在于 gridview 的某处,boolean = true
我可以在 activity 中做类似的事情吗?
for (i in 0 until arrayList!!.size){
WordViewAdapter(this,arrayList).getView(i, convertView = null, parent = null).word.text
}
}
这是我的网格视图:
这是我的适配器:
private lateinit var mTTS : TextToSpeech
class WordViewAdapter(var ctx: Context, var array: ArrayList<Word_Item>?) : BaseAdapter() {
override fun getCount(): Int {
return array!!.size
}
override fun getItem(position: Int): Any {
return array!![position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var view : View = View.inflate(ctx, R.layout.grid_item_list,null)
var word:TextView = view.findViewById(R.id.tx_word)
var translation:TextView = view.findViewById(R.id.tx_transl)
var wordItem : Word_Item = array!![position]
word.text = wordItem.word
translation.text = wordItem.transl
Translate(ctx).question(word,translation)
view.setOnClickListener{
mTTS = TextToSpeech(ctx, TextToSpeech.OnInitListener { status ->
if (status != TextToSpeech.ERROR){
mTTS.setLanguage(Locale.US)
mTTS.setSpeechRate(0.7F)
mTTS.setPitch(0.7F)
mTTS.speak(word.text.toString(),TextToSpeech.QUEUE_FLUSH,null,null)
}
})
}
return view
}
}
伙计们,我做到了。我会 post 在这里,也许它对某人有帮助。
我创建了另一个列表:
var faladas = mutableListOf<String>()
还有一个检查是否相等的函数,如果确定,则发送到适配器,并更新它:
private fun checkPalavra(str: String) {
var flip : Boolean = str.lowercase().trim().contains(binding.txPronunciar.text.toString().lowercase().trim().replace("!","").replace(".","").replace("?","").replace(",","") )
if (flip){
faladas.add(str.lowercase())
wordAdapter?.notifyDataSetChanged()
gridView?.invalidateViews()
gridView?.adapter = WordViewAdapter(this,arrayList,faladas)...
在adapter中,我直接添加:
for (i in 0 until faladas.size){
if (faladas[i].lowercase() == word.text.toString().lowercase()){
view.setBackgroundColor(ctx.resources.getColor(R.color.green))
}
}
我尝试过不同的方法,几个星期以来我一直在尝试这样做。 我也尝试在适配器中添加代码,我考虑过使用 sqlite,但我不知道该怎么做。
我只想检查一个条件,如果这个字符串存在于 gridview 的某处,boolean = true
我可以在 activity 中做类似的事情吗?
for (i in 0 until arrayList!!.size){
WordViewAdapter(this,arrayList).getView(i, convertView = null, parent = null).word.text
}
}
这是我的网格视图:
这是我的适配器:
private lateinit var mTTS : TextToSpeech
class WordViewAdapter(var ctx: Context, var array: ArrayList<Word_Item>?) : BaseAdapter() {
override fun getCount(): Int {
return array!!.size
}
override fun getItem(position: Int): Any {
return array!![position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var view : View = View.inflate(ctx, R.layout.grid_item_list,null)
var word:TextView = view.findViewById(R.id.tx_word)
var translation:TextView = view.findViewById(R.id.tx_transl)
var wordItem : Word_Item = array!![position]
word.text = wordItem.word
translation.text = wordItem.transl
Translate(ctx).question(word,translation)
view.setOnClickListener{
mTTS = TextToSpeech(ctx, TextToSpeech.OnInitListener { status ->
if (status != TextToSpeech.ERROR){
mTTS.setLanguage(Locale.US)
mTTS.setSpeechRate(0.7F)
mTTS.setPitch(0.7F)
mTTS.speak(word.text.toString(),TextToSpeech.QUEUE_FLUSH,null,null)
}
})
}
return view
}
}
伙计们,我做到了。我会 post 在这里,也许它对某人有帮助。
我创建了另一个列表:
var faladas = mutableListOf<String>()
还有一个检查是否相等的函数,如果确定,则发送到适配器,并更新它:
private fun checkPalavra(str: String) {
var flip : Boolean = str.lowercase().trim().contains(binding.txPronunciar.text.toString().lowercase().trim().replace("!","").replace(".","").replace("?","").replace(",","") )
if (flip){
faladas.add(str.lowercase())
wordAdapter?.notifyDataSetChanged()
gridView?.invalidateViews()
gridView?.adapter = WordViewAdapter(this,arrayList,faladas)...
在adapter中,我直接添加:
for (i in 0 until faladas.size){
if (faladas[i].lowercase() == word.text.toString().lowercase()){
view.setBackgroundColor(ctx.resources.getColor(R.color.green))
}
}