Android kotlin使用RecyclerView实例

1、创建entity类

class InternentBarEntity {

    var bname: String? = null
    var barea: String? = null
    var badddata: String? = null
    var bimage: String? = null
    var bid: String? = null
}

2、创建adapter类

/**
 *作者:created by meixi
 *邮箱:15913707499@163.com
 *日期:2019/5/29 10
 */
class InternetBarAdapter( private val entityList: List<InternentBarEntity>) : RecyclerView.Adapter<InternetBarAdapter.ViewHolder>() {
    private var mOnItemClickListener: OnItemClickListener? = null

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.tab_item, null)
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val entity = entityList[position]

        try {
            holder.item_intnbname.text = entity.bname

        } catch (e: Exception) {
            e.printStackTrace()
        }

        //判断是否设置了监听器
        if (mOnItemClickListener != null) {
            //为ItemView设置监听器-
            holder.itemView.setOnClickListener {
                val position = holder.layoutPosition // 1
                mOnItemClickListener!!.onItemClick(holder.itemView, position) // 2
            }

        }
    }

    override fun getItemCount(): Int {
        return entityList.size
    }

    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

        var item_intnbname = itemView.findViewById(R.id.tab_tv) as TextView

    }

    //  删除 打勾 全选
    fun cleckAll(is_checked: Int) { //全选 删除多少那里要删除全部
        for (a in entityList.indices) {
            if (is_checked == a) {
                entityList.get(a).bname = "选中了"
            } else {

            }
        }
        notifyDataSetChanged()
    }

    interface OnItemClickListener {
        fun onItemClick(view: View, position: Int)
    }

    fun setOnItemClickListener(onItemClickListener: OnItemClickListener) {
        this.mOnItemClickListener = onItemClickListener
    }
}

3、添加recyclerview依赖

compile('com.android.support:recyclerview-v7:25.1.1') {
    force = true
}

4、加载数据实现kotlin 代码

private val barEntityList = ArrayList<InternentBarEntity>()
private var barAdapter: InternetBarAdapter? = null
private var lastposion: Int = 0
private var pagenum = 1
private var pageContent:Int = 0
private var pageSize = 10
  public fun initrecycleView(){

        var internentBarEntity2:InternentBarEntity= InternentBarEntity()
        internentBarEntity2.badddata = "地址122"
        internentBarEntity2.bname="名称111222"

        barEntityList.add(internentBarEntity2)

        for (a in 0..19) {
            var internentBarEntity:InternentBarEntity=InternentBarEntity()
            internentBarEntity.badddata = "地址1"
            internentBarEntity.bname="名称111=="+a
            barEntityList.add(internentBarEntity)
//            if (a==6){
//                break
//            }
        }

        barAdapter = InternetBarAdapter( barEntityList)

        barAdapter!!.setOnItemClickListener(object : InternetBarAdapter.OnItemClickListener {
            override fun onItemClick(view: View, position: Int) {
                barAdapter!!.cleckAll(position)
                LgqLogutil.e("ITEM"+position)
            }
        })

        mRecyclerView.layoutManager = LinearLayoutManager(context)
        mRecyclerView.adapter = barAdapter
        mRecyclerView.isNestedScrollingEnabled = false//禁止滑动
        mRecyclerView.isFocusable = false//导航栏切换不再focuse
        mRecyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
            //用来标记是否正在向最后一个滑动,既是否向右滑动或向下滑动
            internal var isSlidingToLast = false

            override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
                val manager = recyclerView!!.layoutManager as LinearLayoutManager
                // 当不滚动时
                if (newState == RecyclerView.SCROLL_STATE_IDLE) {
                    //获取最后一个完全显示的ItemPosition
                    lastposion = manager.findLastCompletelyVisibleItemPosition()
                    //                    Log.i("lgq","..........dddddd====="+"....."+lastposion);
                    val totalItemCount = manager.itemCount
                    if (lastposion == totalItemCount - 1 && isSlidingToLast) {
                        pagenum++
                        if (pagenum > pageContent) {

                            Toast.makeText(activity,"yidaodi",Toast.LENGTH_LONG).show()
                            return
                        }

                    }
                }
            }

            override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {
                super.onScrolled(recyclerView, dx, dy)
                //dx用来判断横向滑动方向,dy用来判断纵向滑动方向
                //大于0表示,正在向右滚动;小于等于0 表示停止或向左滚动
                isSlidingToLast = dy > 0
            }
        })
    }

bug在线交流:QQ1085220040

效果:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在RecyclerView上显示项目,您需要执行以下操作: 1. 创建一个适配器类来管理和显示数据。适配器类必须继承RecyclerView.Adapter类并实现三个方法:onCreateViewHolder()、onBindViewHolder()和getItemCount()。onCreateViewHolder()方法负责创建视图持有者ViewHolder,onBindViewHolder()方法负责绑定数据到ViewHolder,getItemCount()方法返回数据源中项目的数量。 2. 创建一个布局文件来定义RecyclerView项目的外观。此布局将用作RecyclerView.Adapter的参数之一。 3. 在主活动(Activity)中实例RecyclerView,并将其与适配器和数据源连接。您需要提供一个布局管理器(LayoutManager)来指定RecyclerView项目的排列方式。 以下是一个简单的示例: 1. 创建适配器类 ``` class MyAdapter(private val items: List<String>) : RecyclerView.Adapter<MyAdapter.ViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.my_item_layout, parent, false) return ViewHolder(view) } override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.textView.text = items[position] } override fun getItemCount(): Int { return items.size } class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val textView: TextView = itemView.findViewById(R.id.my_text_view) } } ``` 2. 创建布局文件 my_item_layout.xml: ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp"> <TextView android:id="@+id/my_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="18sp" /> </LinearLayout> ``` 3. 在主活动中实例RecyclerView MainActivity.kt: ``` class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val items = listOf("Item 1", "Item 2", "Item 3") val adapter = MyAdapter(items) val layoutManager = LinearLayoutManager(this) recycler_view.adapter = adapter recycler_view.layoutManager = layoutManager } } ``` activity_main.xml: ``` <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 这将在RecyclerView上显示三个项目,每个项目都由my_item_layout.xml定义的布局文件呈现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值