完全没有过多使用CustomListAdapter来动态填充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就能正常工作。但是该列表变得很长,显示了所有这些空白行。在具有
在CustomListAdapter中使用x.Visibility = ViewStates.Gone时,其他任何人都遇到过这种不可预测性吗?有没有比设置Android.Views.ViewStates.Gone更好的方法来摆脱未使用的TextViews占用的垂直空间?
最佳答案
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;
我确实找到了解决此问题的方法。如果我为每个列表长度创建一个不同的视图(即,一个包含4个项目的框的视图,另一个包含3个项目的框的视图,另一个包含2个项目的框的视图,等等),然后为列表中的每个项目添加适当的视图列表(根据其内容大小),动态列表可以完美显示和滚动。在这种情况下,这对我有用,因为只有5种不同的排列。但是,对于存在更多排列的情况,最好找出问题所在。