完全没有过多使用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种不同的排列。但是,对于存在更多排列的情况,最好找出问题所在。

09-25 22:54