如何仅修改父RecyclerView位置0处的第一个嵌套RecyclerView(子)元素?

问题描述 投票:0回答:1

我有包含嵌套Recyclerview 的parentRecyclerview。 nestedRecyclerView 列出了几个项目:(Apple、Banana、Pear)。我想像这样粗体这个nestedRecyclerview的第一个项目(苹果):

**Apple**
Banana
Pear

-------

Apple
Banana
Pear

-------

Apple
Banana
Pear

我可以通过执行以下操作将其设置为bold每个嵌套回收器视图列表的第一项:

when (position) {
0 -> 
// code to make apple bold
}

但这给了我:

**Apple**
Banana
Pear

-------

**Apple**
Banana
Pear

-------

**Appla**
Banana
Pear

我该怎么办?我会添加我所有的代码,但老实说,这是大量的代码,而且比苹果、香蕉、梨复杂得多。我更喜欢用 Kotlin 编写代码,但我也能理解 Java(如果你知道的话)。谢谢!

在网上搜索了很多,但大多数都谈论 onClickListener 事件。

java android kotlin android-recyclerview nestedrecyclerview
1个回答
0
投票

尝试使用此创建变量来管理基于位置的视图粗体

class NestedAdapter(...) {
private var topItemBold = false

override fun onBindViewHolder(holder: NestedViewHolder, position: Int) {
    val item = items[position]

    if (topItemBold && position == 0) {
        holder.textView.setTypeface(null, Typeface.BOLD)
    } else {
        holder.textView.setTypeface(null, Typeface.NORMAL)
    }

    // ... rest of your binding logic
}

并像这样更新你的父适配器

class ParentAdapter(...) {
override fun onBindViewHolder(holder: ParentViewHolder, position: Int) {

    val nestedAdapter = holder.nestedRecyclerView.adapter as NestedAdapter

    if (position == 0) {
        nestedAdapter.topItemBold = true
    } else {
        nestedAdapter.topItemBold = false
    }
}

所以在上面我们的

topItemBold
仅适用于父列表第一项的嵌套视图上的第一项

© www.soinside.com 2019 - 2024. All rights reserved.