gpt4 book ai didi

Android.Views.ViewStates.Gone 在 CustomListAdapter 中导致不可预测的结果

转载 作者:行者123 更新时间:2023-11-30 04:17:07 36 4
gpt4 key购买 nike

使用 CustomListAdapter 动态填充 ListView 的文档并不过分!很难找到这方面的信息,但我终于让它起作用了。

抽象地说,在我的 ListView CustomListAdapter 中,我填充了一个列表,显示了一堆框和每个框的内容。每个框最多允许 4 个项目(通过 textViews 的 LinearLayout)

Box 0
--------
shirts
shoes
ties
boxers

Box 1
-------
laptops

Box 2
-----
tennis racket
basketball
diving mask

Box 3
----------
tiles
grout

只要我不使用未使用的 TextView(即空白和可见),CustomListAdapter 就可以正常工作。但是由于显示了所有这些空白行,列表变得很长。在 < 4 个项目的 LinearLayouts 中(例如 Box 1),如果我试图通过将未使用的 TextViews 的可见性设置为“消失”来缩小空白的垂直空间,数据会以不可预测的方式困惑,即“潜水面具”将出现在 Box 1 而不是 Box 2 中,Box 0 中的内容将消失。

在 CustomListAdapter 中使用 x.Visibility=ViewStates.Gone 时,有没有其他人经历过这种不可预测性?有没有比设置 Android.Views.ViewStates.Gone 更好的方法来摆脱未使用的 TextView 占用的垂直空间?

最佳答案

dmon、zapl 和 Matthew:感谢您的回复。以下是 GetView 覆盖函数内部的一些代码:

var  tv_class_title  =view.FindViewById(Resource.Id.tv_class_title) as TextView;
var tv_codex =view.FindViewById(Resource.Id.tv_codex) as TextView;

//class title
if (item.class_title.Length>0){
tv_class_title.SetText(item.class_title, TextView.BufferType.Spannable);
}else{
tv_class_title.Visibility = Android.Views.ViewStates.Gone;
}
//codex
if (item.codex.Length>0){
tv_codex.SetText(item.codex, TextView.BufferType.Spannable);
}else{
tv_codex.Visibility = Android.Views.ViewStates.Gone;
}

return view;

我确实找到了解决此问题的方法。如果我为每个列表长度创建一个不同的 View (即一个包含 4 个项目的框的 View ,另一个包含 3 个项目的框的 View ,另一个包含 2 个项目的框的 View ,等等)并为每个项目膨胀适当的 View 列表(根据其内容大小),动态列表完美显示和滚动。在这种情况下这对我有用,因为只有 5 种不同的排列。但是,对于有更多排列的情况,最好找出问题所在。

关于Android.Views.ViewStates.Gone 在 CustomListAdapter 中导致不可预测的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9812663/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com