繁体   English   中英

在新课程中与Kotlin一起使用recyclerView

[英]recyclerView with Kotlin in new class

在mainActivity上使用Kotlin创建了一个recyclerView。

它工作正常。

我现在想将代码转移到新类中,从MainActivity调用该类并以这种方式激活recyclerView。

在mainActivity上调用了该类,但是显然这还不够……

var newClass: NewClass = NewClass()

如何使用recyclerView调用类或如何激活它?

添加了对newClass的调用。 想要删除所有这些行。

谢谢

这是我在onCreate上的代码:

enter code here

var newClass: NewClass = NewClass()


rowsList = ArrayList<RowFromModel>()
layoutManager = LinearLayoutManager(this)
adapter = RowListAdapter(rowsList!!, this)

rowsListRv.layoutManager = layoutManager
rowsListRv.adapter = adapter

//load data
var model = TableViewModel()

var dataFromModel: ArrayList<String> = model.getData()
for (i in 0..dataFromModel.size - 1) {
    val rowFromModel = RowFromModel()
    rowFromModel.row = dataFromModel.get(i)
    rowsList!!.add(rowFromModel)
}

adapter!!.notifyDataSetChanged()
enter code here

问题在于, NewClass需要某种方式来了解recyclerViewContext (或Activity)才能进行工作,因此应将它们传递给类。 您可以执行以下操作

class NewClass (val recyclerView: RecyclerView, val context: Context) {

    val rowsList = ArrayList<RowFromModel>() 
    val layoutManager = LinearLayoutManager(context) 
    val adapter = RowListAdapter(rowsList, context)

    // load data
    var model = TableViewModel()

    var dataFromModel: ArrayList<String> = model.data 
    val rowFromModel = RowFromModel()

    init {
        // this will be called after the constructor is called
        recyclerView.layoutManager = layoutManager 
        recyclerView.adapter = adapter 

        for (i in 0..dataFromModel.size - 1) {
            val rowFromModel = RowFromModel()
            rowFromModel.row = dataFromModel[i]
            rowsList.add(rowFromModel)
        }

        adapter.notifyDataSetChanged()
    }
}

然后在MainActivityonCreate() ,可以执行以下操作

var newClass: NewClass = NewClass(rowsListRv, this)

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM