【发布时间】:2019-10-29 02:58:20
【问题描述】:
我目前正在将猜谜游戏作为学习过程的一部分。在我的应用程序中,您基本上必须从三个中猜出一个正确的定义。 TextView 提供了一个词,RecyclerView——三个选项。单词来自文本文件。
点击RecyclerView 后,我学会了如何更改它。 TextView 中的单词也必须更改,但我无法从 Adapter 类访问它。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var listNames = mutableListOf<String>()
listMain.layoutManager = GridLayoutManager (this,3,1,false) as RecyclerView.LayoutManager?
listMain.adapter = ItemAdapter(listNames)
readDictionaryFile(listNames)
wordGuess.text = listNames[0]
}
private fun readDictionaryFile(listNames: MutableList<String>) {
val reader = Scanner(resources.openRawResource(R.raw.test))
while (reader.hasNextLine()) {
val line = reader.nextLine()
val split = line.split(";")
listNames.add(split[0])
}
}
class ItemAdapter(private val listNames: MutableList<String>): RecyclerView.Adapter<CustomViewHolder>() {
//number of items
override fun getItemCount(): Int {
return listNames.size
}
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): CustomViewHolder {
val layoutInflater = LayoutInflater.from(p0.context)
val cellForRow = layoutInflater.inflate(R.layout.list_layout, p0, false )
return CustomViewHolder(cellForRow)
}
override fun onBindViewHolder(p0: CustomViewHolder, p1: Int) {
val listTitle = listNames.get(p1)
p0.view.listNamesView.text = listTitle
p0.view.setOnClickListener {
//do something
notifyDataSetChanged()
}
}
【问题讨论】:
-
尝试将监听器从您的活动添加到适配器中,并在需要时触发它以更改 TextView 状态。