我出于练习目的制作了血压跟踪器,用户可以在其中存储他们的血压数据。我计划按天对值进行分组(因此,卡中包含一天的度量值)。我有一个RecyclerView
设置,可以用种子数据填充它。我只是不知道如何在CardView
中将它们分组。
从Fragment
我尝试过:
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProviders.of(this).get(DataListViewModel::class.java)
bpList = viewModel.data
val bpAdapter = BpListAdapter(bpList)
bpData.adapter = bpAdapter
bpData.layoutManager = LinearLayoutManager(context)
val dataByDay = bpList.groupBy { it.date.dayOfYear() }
val inflater = LayoutInflater.from(context)
for (k in dataByDay.keys) {
var card = inflater.inflate(R.layout.bp_day_card, bpData, false);
for (v in dataByDay[k]!!) {
card.findViewById<CardView>(R.id.cw).addView(bpAdapter.itemViews[bpList.indexOf(v)])
}
}
}
这导致IndexOutOfBoundsException
。
您应该使用cardview作为容器布局来创建自定义项目视图布局,然后在适配器的onCreateViewHolder()中膨胀该布局,并在适配器的onBindViewHolder()中绑定各个字段数据。