我有一个让我疯狂的ListView屏幕。
每行有三个TextView。适配器是一个自定义ArrayAdapter,它使用视图回收机制:如果首先请求该行,则新视图会膨胀,否则将使用循环视图。一切正常。我没有展示它,但现在假设它已正确实现。
这是正常情况:
屏幕右上角有一个搜索按钮。单击时,列表中的每个文本视图都被“清除”!我调试了代码,文本视图就在那里,文本设置完毕,一切正常,除了文本几乎没有显示。这是使用DDMS进行的视图转储:
看起来只显示文本的第一个字母。这只发生在某些设备上,并且只有当适配器的getView
方法返回行的循环视图时,才会按下搜索按钮,这会使键盘显示出来(如果我关闭它,则文本是仍然缺席)。如果我修改getView
方法以始终为每一行充气,这不会发生,但当然这不是一个选项,因为我的列表应该能够处理大量项目。
看起来像一个错误,但我需要对此做点什么。
我还测试了一种基于地图的替代回收机制(基本上我将地图中每行的视图放在一起)。仍然观察到这种行为。
设备是运行4.1.2的三星Galaxy SII。例如,没有发生在Galaxy SIII mini中。
你知道造成这个故障的原因是什么吗?与TextView的宽度相关的东西?
提前致谢
答案 0 :(得分:0)
我终于找到了原因。
它是适配器xml文件中的TextView之一。它包含在固定宽度的LinearLayout中。其宽度设置为fill_parent
,将其更改为wrap_content
可解决此问题。