StickRecyclerView

2019-04-08  本文已影响0人  别却江南

StickRecyclerView

实现吸顶效果的RecyclerView。


效果1

)


效果2
)

注意

Use Gradle

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

dependencies {
    implementation 'com.github.daichanglin:StickRecyclerView:1.13'
}

How do I use StickRecyclerView?

xml:

 <com.dcl.stickrecyclerview.StickRecyclerView
            android:id="@+id/rv_01"
            android:layout_width="0dp"
            app:layout_constraintVertical_bias="0"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:layout_height="wrap_content">
    </com.dcl.stickrecyclerview.StickRecyclerView>

java代码:

class SelfAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>(), StickHelper {

    private var data: List<String>? = null
    private val labels by lazy { mutableMapOf<Int, String>() }
    private val Type_Label = 1          //需要吸顶的类型
    private val Type_Item = 2           //其他类型
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
      ...
    }

    override fun getItemCount(): Int {
        ...
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
      ...
    }

    override fun getItemViewType(position: Int): Int {
        if (labels.containsKey(position)) {
            return Type_Label
        } else {
            return Type_Item
        }
    }
  
    /**
     * 需要额外实现的两个方法之一
     */
    override fun isFloatType(position: Int): Boolean {
        return getItemViewType(position) == Type_Label
    }

    /**
     * 需要额外实现的两个方法之二
     */
    override fun isFloatMembers(position: Int): Boolean {
        return getItemViewType(position) == Type_Item
    }

}

简要说明

步骤

  1. 使用StickRecyclerView替换原来的RecyclerView
  2. adapter实现StickHelper接口。

StickRecyclerView设置stick可通过xml属性或者java代码设置,默认为true,表示启用吸顶,设置为false则表现与普通Recyclerview无异。

提醒:

相较于其他方式实现吸顶的优缺点

优点

缺点

上一篇下一篇

猜你喜欢

热点阅读