吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1213|回复: 4
收起左侧

[求助] Adapter的getItemCount为0

[复制链接]
zgkjzf 发表于 2021-12-31 22:17
class TimeListAdapter: RecyclerView.Adapter<TimeListAdapter.TimeListViewHolder>() {
    private var datalist1:ArrayList<TimeListShowModel> = ArrayList()

    fun addItems(items:ArrayList<TimeListShowModel>){
        this.datalist1=items
        Log.e("test",datalist1.size.toString())
        notifyDataSetChanged()
    }

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

    override fun onBindViewHolder(holder: TimeListAdapter.TimeListViewHolder, position: Int) {
        var t=datalist1[position]
        Log.e("test1",datalist1.size.toString())
        holder.bindView(t)
    }

    override fun getItemCount(): Int =datalist1.size?:0

    class TimeListViewHolder(var view: View):RecyclerView.ViewHolder(view) {
        private var tv1=view.findViewById<TextView>(R.id.tv1)
        private var tv2=view.findViewById<TextView>(R.id.tv2)
        private var tv3=view.findViewById<TextView>(R.id.tv3)
        private var tv4=view.findViewById<TextView>(R.id.tv4)
        private var tv5=view.findViewById<TextView>(R.id.tv5)
        private var tv6=view.findViewById<TextView>(R.id.tv6)
        fun bindView(t:TimeListShowModel){
            tv1.text=t.shichang.toString()
            Log.e("shichang",t.shichang.toString())
            if (t.haishang!=0)tv2.text=t.haishang.toString()
            if (t.yehang!=0)tv3.text=t.yehang.toString()
            tv4.text=t.shiduan
            tv5.text=t.kemu
            tv6.text=t.jixing
        }
    }
}传入数据了,在addItems打印有个数,但在getItemCount一直为0,recycleview一直不显示,各位大佬帮忙看下:打印信息是E/test: 2

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小骚 发表于 2021-12-31 22:58
本帖最后由 小骚 于 2021-12-31 23:08 编辑

首先getItemCount方法移除多余elvis运算符,其次你可能调用错了,都已经datalist1.size了还调用toString()干啥?一个int类型肯定没内容噻,正确调用方法是adapter.itemCount。不显示内容可能是你没设置RecyclearView的LinearLayoutManger。正确调用以及设置方法是
[Java] 纯文本查看 复制代码
val timeListAdapter = TimeListAdapter()
        /**
         * 模拟添加10条数据
         */
        val stringList = ArrayList<String>()
        for (i in 0..9) {
            stringList.add("i:$i")
        }
        /**
         * 填充Adapter数据
         */
        timeListAdapter.addItems(stringList)
        /**
         * 打印日志
         */
        Log.d(">>>>>>","timeListAdapterItemCount:" + timeListAdapter.itemCount);
        val rvTest = findViewById<RecyclerView>(R.id.rv_test)
        rvTest.layoutManager =  LinearLayoutManager(this)
        rvTest.adapter = timeListAdapter
 楼主| zgkjzf 发表于 2022-1-1 08:01
小骚 发表于 2021-12-31 22:58
首先getItemCount方法移除多余elvis运算符,其次你可能调用错了,都已经datalist1.size了还调用toString()干 ...

我其他的都设置了,这是确认正常的
recycler_main.layoutManager=LinearLayoutManager(this)
TimeListAdapter().addItems(List_show)
recycler_main.adapter=TimeListAdapter()
Log.e("List_show",List_show.size.toString())
这个输出也是对了2,E/List_show: 2
fun addItems(items:ArrayList<TimeListShowModel>){
        this.datalist1=items
        Log.e("addItems",datalist1.size.toString())
        notifyDataSetChanged()
    }
显示也是对的,E/addItems: 2
override fun getItemCount(): Int {
        Log.e("getItemCount",datalist1.size.toString())
        return datalist1.size
    }
这个显示就有问题,E/getItemCount: 0
小骚 发表于 2022-1-1 13:51
zgkjzf 发表于 2022-1-1 08:01
我其他的都设置了,这是确认正常的
recycler_main.layoutManager=LinearLayoutManager(this)
TimeListA ...

?????,你看我给你的调用示例啊,先定义一个Adapter,然后再添加数据,其次才是RecyclerView设置前面定义的Adapter,注意重点是要定义一个Adapter!!!,你是直接调用了Adapter(),用Java表示就是新建了一个对象,每次你使用都新建肯定是空啊

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
zgkjzf + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| zgkjzf 发表于 2022-1-2 20:38
小骚 发表于 2022-1-1 13:51
?????,你看我给你的调用示例啊,先定义一个Adapter,然后再添加数据,其次才是RecyclerView设置前面定义 ...

谢谢大神,醍醐灌顶啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 19:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表