[英]SectionedRecyclerViewAdapter in kotlin
任何人都可以将 java 代码重构为 kotlin 代码?
这是我的代码
FoodListAdapter.kt
class FoodListAdapter: StatelessSection(SectionParameters.builder()
.itemResourceId(R.layout.content_food_list)
.headerResourceId(R.layout.header_food_list)
.build()) {
val itemList = arrayListOf<Int>(1, 2, 3 ,4)
override fun getContentItemsTotal(): Int {
return itemList.size
}
override fun onBindItemViewHolder(holder: RecyclerView.ViewHolder?, position: Int) {
val itemHolder = holder as MyItemViewHolder
// bind your view here
itemHolder.tvItem.setText(itemList[position])
}
override fun getItemViewHolder(view: View?): RecyclerView.ViewHolder {
return MyItemViewHolder(view!!)
}
}
class MyItemViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
lateinit var tvItem: TextView
init {
tvItem = itemView.findViewById(R.id.txtItem) as TextView
}
}
FoodListActivity.kt
class FoodActivity : AppCompatActivity() {
private var context: Context? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_food_list)
context = this
val sectionAdapter = SectionedRecyclerViewAdapter()
// Add your Sections
sectionAdapter.addSection(FoodListAdapter())
// Set up your RecyclerView with the SectionedRecyclerViewAdapter
val recyclerView = findViewById(R.id.foodList) as RecyclerView
recyclerView.setLayoutManager(LinearLayoutManager(context))
recyclerView.adapter(sectionAdapter)
}
}
我遇到的问题是“'RecyclerView.Adapter<(raw) RecyclerView.ViewHolder!> 类型的表达式'适配器'?” 不能作为函数调用。在 recyclerView.adapter(sectionAdapter) 之后找不到函数“invoke()”“有人请指导我解决这个问题。 抱歉我英语不好
class FoodListAdapter(val itemList): StatelessSection(SectionParameters.builder()
.itemResourceId(R.layout.content_food_list)
.headerResourceId(R.layout.header_food_list)
.build()) {
override fun getContentItemsTotal(): Int {
return itemList.size
}
override fun onBindItemViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val itemHolder = holder as MyItemViewHolder
itemHolder.tvItem.setText(itemList[position])
}
override fun getItemViewHolder(view: View?): RecyclerView.ViewHolder {
return MyItemViewHolder(view!!)
}
}
class MyItemViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
internal val tvItem: TextView =itemView.findViewById(R.id.txtItem)
}
对于您的活动,您不需要上下文变量 Activity extends Context
class FoodActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_food_list)
val sectionAdapter = SectionedRecyclerViewAdapter()
val itemList = arrayListOf<Int>(1, 2, 3 ,4)
sectionAdapter.addSection(FoodListAdapter(itemList))
val recyclerView:RecyclerView = findViewById(R.id.foodList)
recyclerView.layoutManager = LinearLayoutManager(context)
recyclerView.adapter = sectionAdapter
}
}
正如@CampbellMG 提到的,您需要使用recyclerView.adapter = sectionAdapter
或recyclerView.setAdapter(sectionAdapter)
recyclerView.adapter=sectionAdapter
更惯用
您正在尝试将类属性作为函数访问
在 Java 中,您可以使用以下内容设置适配器:
recyclerView.setAdapter(sectionAdapter)
在 Kotlin 中,这看起来像:
recyclerView.adapter = sectionAdapter
在这里查看更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.