是否可以在没有 ListView 的情况下使用适配器?

Can I use adapters without having ListViews?

提问人:MaDudeeK 提问时间:10/10/2023 更新时间:10/10/2023 访问量:25

问:

我从后端收到大量数据,我需要以不同的方式在应用程序的 2 个部分中显示这些数据,例如绘制实时图表。有问题的部分中有 1 个是一个矩形,它只是一个精心设计的滚动条(拖动您在下图中看到的框架以更改当前显示的通道集)。

在不赘述太多细节的情况下,我有一个通道列表,对于每个通道,我在该矩形内生成一条线。它最终应该看起来像这样:

enter image description here

每行的颜色还取决于每个通道的类型和状态,因此每行都有一点逻辑,这意味着它必须是一个视图,而不仅仅是一个 png。该矩形不能滚动,它是一个静态视图。所以我在想,有没有办法在没有 ListView 的情况下使用适配器(类似于 ArrayAdapter)?我想要一个 LinearLayout,在该 LinearLayout 中,我希望为 List 中的每个通道对象创建一行。我应该只做一个foreach循环吗?

android kotlin android-arrayadapter android-custom-view

评论

0赞 CommonsWare 10/10/2023
ListView并且已经过时了好几年。它们被替换为 和 。在这种情况下,由于您的内容不可滚动,因此(或 Compose UI 中的)似乎没问题。适配器似乎是不必要的,因为这些适配器适用于需要滚动的情况,并且需要能够在用户滚动时动态创建大型数据集的可视化表示形式。ListAdapterRecyclerViewRecyclerView.AdapterLinearLayoutRow()
1赞 Tenfour04 10/10/2023
只是一点点澄清......已过时,但事实并非如此。android.widget.ListAdapterandroidx.recyclerview.widget.ListAdapter
0赞 MaDudeeK 10/10/2023
@CommonsWare 嘿,谢谢你的回答。我想澄清一下;在这种情况下,for each 循环适合用视图填充 LinearLayout 是否正确?这可能是一个糟糕的问题,但我被教导要不惜一切代价避免循环。
0赞 CommonsWare 10/10/2023
“在这种情况下,每个循环都适合用视图填充 LinearLayout 是否正确?”——对于您的方法,是的,因为我不知道您还会怎么做。“我被教导要不惜一切代价避免循环”——这是你得到的非常不准确的建议。
0赞 Tenfour04 10/11/2023
for 循环很棒,是大规模处理任何事情的关键部分。你可能误解了这个建议,或者有一个很差的老师。

答:

0赞 MaDudeeK 10/10/2023 #1

"ListView并且已经过时了好几年。它们被替换为 和 。在这种情况下,由于您的内容不可滚动,因此(或 Compose UI 中的)似乎没问题。适配器似乎是不必要的,因为这些适配器适用于您需要滚动并且需要能够在用户滚动时动态创建大型数据集的可视化表示的情况。 @CommonsWareListAdapterRecyclerViewRecyclerView.AdapterLinearLayoutRow()

在上面的例子中,适当的解决方案是循环创建并添加到 .适配器是不必要的,因为在这种情况下不需要滚动。for eachListViewsLinearLayout