Android 科特林的SectionedRecyclServiceAdapter
任何人都可以将java代码重构为kotlin代码 这是我的密码 FoodListAdapter.ktAndroid 科特林的SectionedRecyclServiceAdapter,android,kotlin,android-recyclerview,Android,Kotlin,Android Recyclerview,任何人都可以将java代码重构为kotlin代码 这是我的密码 FoodListAdapter.kt class FoodListAdapter: StatelessSection(SectionParameters.builder() .itemResourceId(R.layout.content_food_list) .headerResourceId(R.layout.header_food_list) .build()) { val itemList
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
}
}
我有个问题是
无法将“RecyclerView.adapter”类型的表达式“adapter”作为函数调用。找不到函数“invoke()”
回收后查看适配器(节适配器)
有人请指导我修复这个。
抱歉,我英语不好您正在尝试将类属性作为函数访问 在Java中,您可以将适配器设置为:
recyclerView.setAdapter(sectionAdapter)
在科特林,这看起来像:
recyclerView.adapter = sectionAdapter
查看更多信息
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
}
}
class FoodActivity:AppCompatActivity(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity\u food\u list)
val sectionAdapter=sectionedRecyclServiceAdapter()
val itemList=arrayListOf(1,2,3,4)
sectionAdapter.addSection(FoodListAdapter(itemList))
val recyclerView:recyclerView=findviewbyd(R.id.foodList)
recyclerView.layoutManager=LinearLayoutManager(上下文)
recyclerView.adapter=节适配器
}
}
正如@CampbellMG提到的,您需要使用recyclerView.adapter=sectionAdapter
或recyclerView.setAdapter(sectionAdapter)
recyclerView.adapter=sectionAdapter
更为惯用
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
}
}