ListView上的奇怪故障:按下搜索操作按钮后文本消失

时间:2014-02-20 13:30:51

标签: java android android-layout android-listview android-arrayadapter

我有一个让我疯狂的ListView屏幕。

每行有三个TextView。适配器是一个自定义ArrayAdapter,它使用视图回收机制:如果首先请求该行,则新视图会膨胀,否则将使用循环视图。一切正常。我没有展示它,但现在假设它已正确实现。

这是正常情况:

enter image description here

屏幕右上角有一个搜索按钮。单击时,列表中的每个文本视图都被“清除”!我调试了代码,文本视图就在那里,文本设置完毕,一切正常,除了文本几乎没有显示。这是使用DDMS进行的视图转储:

enter image description here

看起来只显示文本的第一个字母。这只发生在某些设备上,并且只有当适配器的getView方法返回行的循环视图时,才会按下搜索按钮,这会使键盘显示出来(如果我关闭它,则文本是仍然缺席)。如果我修改getView方法以始终为每一行充气,这不会发生,但当然这不是一个选项,因为我的列表应该能够处理大量项目。

看起来像一个错误,但我需要对此做点什么。

我还测试了一种基于地图的替代回收机制(基本上我将地图中每行的视图放在一起)。仍然观察到这种行为。

设备是运行4.1.2的三星Galaxy SII。例如,没有发生在Galaxy SIII mini中。

你知道造成这个故障的原因是什么吗?与TextView的宽度相关的东西?

提前致谢

1 个答案:

答案 0 :(得分:0)

我终于找到了原因。

它是适配器xml文件中的TextView之一。它包含在固定宽度的LinearLayout中。其宽度设置为fill_parent,将其更改为wrap_content可解决此问题。