为什么使用Recyclerview gridlayoutmanager时只显示第一行

3

适配器调用:

adherenceDetails.hasFixedSize()
                    adherenceDetails.layoutManager= GridLayoutManager(this@PatientPlanStatus,3)
                    adherenceDetails.adapter= PatientPlanDetails(this@PatientPlanStatus, patientPlanAdherenceData.data?.get(0)?.adherence!!)

适配器:
class PatientPlanDetails(var mcontext: Context, var patientDatas:ArrayList<AdherencePoJo>): RecyclerView.Adapter<RecyclerView.ViewHolder>() {

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

    val TAG="PatientPlanDetails"


    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): RecyclerView.ViewHolder {

        val v = LayoutInflater.from(mcontext).inflate(R.layout.patient_plan_adherence, parent, false)
        return Item(v)
    }

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

        //Log.i(TAG,"On Bind")
        (holder as Item).bindData(patientDatas.get(position),mcontext)


    }

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


        fun bindData(patienData: AdherencePoJo, context: Context) {

            val TAG="PatientPlanDetails"

        }

    }


}

getItemCount() 返回了正确的大小。但只有第一行显示。请查看此图片 enter image description here 卡片的实际高度是正确的,但其中的项目不可见。 在注销时我没有得到任何日志记录。


2
请分享您的 XML 代码。 - Rucha Bhatt Joshi
1
这是因为您已将回收视图高度设置为match_parent,应该改为wrap_content或尝试使用一些固定值,如100dp,如果wrap_content无法正常工作。 - VikasGoyal
2个回答

4

将您的 patient_plan_adherence 布局高度设置为wrap_content


0
尝试在您的RecyclerView中使用此属性:

app:layout_behavior="@string/appbar_scrolling_view_behavior"

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接