android kotlin CollapsingToolbarLayout+RecyclerView折叠+BaseRecyclerViewAdapterHelper
android CollapsingToolbarLayout+RecyclerView折叠+BaseRecyclerViewAdapterHelper
<!-- -->
activity代码
package com.nyw.folddemoimport android.graphics.Colorimport android.graphics.PorterDuffimport android.os.Bundleimport android.util.Logimport androidx.appcompat.app.AppCompatActivityimport androidx.core.content.ContextCompatimport androidx.core.content.res.ResourcesCompatimport com.bumptech.glide.Glideimport com.chad.library.adapter.base.BaseQuickAdapterimport com.chad.library.adapter.base.viewholder.BaseViewHolderimport com.google.android.material.appbar.AppBarLayoutimport com.google.android.material.appbar.AppBarLayout.OnOffsetChangedListenerimport com.nyw.folddemo.view.RecyManagerimport kotlinx.android.synthetic.main.activity_main.*class MainActivity : AppCompatActivity() { lateinit var adapter: BaseQuickAdapter var homeDataList: MutableList = mutableListOf() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) initView(); } private fun initView() { initAdapter() } /** * 初始化容器 */ fun initAdapter(){ RecyManager.setBaseVertical(this, rcv_data) RecyManager.setItemDecoration(rcv_data, 15, 15, 0, 0) adapter = object : BaseQuickAdapter(R.layout.layout_index_item, mutableListOf()){ override fun convert(holder: BaseViewHolder, item: HomeItem) { Glide.with(context).load(item.imgUrl).error(R.mipmap.m1) .into(holder.getView(R.id.iv_img)) holder.setText(R.id.tv_title,item.title) } } rcv_data.adapter=adapter for (i in 1..20){ var homeItem :HomeItem = HomeItem() homeItem.title="好看的小姐姐" homeItem.imgUrl="" homeDataList.add(homeItem) } adapter.setList(homeDataList) }}
themes.xml文件
@color/purple_500 @color/purple_700 @color/white @color/teal_200 @color/teal_700 @color/black ?attr/colorPrimaryVariant @color/purple_200 @color/purple_200 @color/purple_200 @color/gray_f5 180dp 16dp 16dp
recyclerView设置布局管理器代码
package com.nyw.folddemo.viewimport android.annotation.SuppressLintimport android.content.Contextimport androidx.recyclerview.widget.*/** * 类描述:recyclerView设置布局管理器 * 修改备注: */object RecyManager { //设置item的间距 fun setItemDecoration(recyclerView: RecyclerView, space_top: Int, space_bottom: Int, space_left: Int, space_right: Int){ recyclerView.addItemDecoration(SpaceItemDecoration(space_top, space_bottom, space_left, space_right)) } //竖向滑动 @SuppressLint("WrongConstant") fun setBaseVertical(mContext: Context, recyclerView: RecyclerView): LinearLayoutManager { val layoutManager = LinearLayoutManager(mContext) //设置为垂直布局,这也是默认的 layoutManager.orientation = OrientationHelper.VERTICAL //设置增加或删除条目的动画 recyclerView.itemAnimator = DefaultItemAnimator() //设置布局管理器 recyclerView.layoutManager = layoutManager return layoutManager } //横向滑动 @SuppressLint("WrongConstant") fun setHorizontalBase(mContext: Context, recyclerView: RecyclerView): LinearLayoutManager { val layoutManager = LinearLayoutManager(mContext) //设置为垂直布局,这也是默认的 layoutManager.orientation = OrientationHelper.HORIZONTAL //设置增加或删除条目的动画 recyclerView.itemAnimator = DefaultItemAnimator() //设置布局管理器 recyclerView.layoutManager = layoutManager return layoutManager } //Grid fun setGridBase(mContext: Context, recyclerView: RecyclerView, line: Int) { val layoutManager = GridLayoutManager(mContext, line) //设置增加或删除条目的动画 recyclerView.itemAnimator = DefaultItemAnimator() //设置布局管理器 recyclerView.layoutManager = layoutManager }}
SpaceItemDecoration类
package com.nyw.folddemo.viewimport android.graphics.Rectimport android.view.Viewimport androidx.recyclerview.widget.RecyclerView/** * 类描述: * 创建人:Administrator * 修改备注: */class SpaceItemDecoration(var space_top: Int, var space_bottom: Int, var space_left: Int, var space_right: Int) : RecyclerView.ItemDecoration() { override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) { super.getItemOffsets(outRect, view, parent, state) outRect.top = space_top outRect.bottom = space_bottom outRect.left = space_left outRect.right = space_right }}
HomeItem类
package com.nyw.folddemoclass HomeItem { var imgUrl :String = "" var title :String = ""}
demo代码
(101条消息) kotlinCollapsingToolbarLayout+RecyclerView折叠-Android文档类资源-CSDN文库