ListViewAdaper,项目不重绘取决于处理getView(XXX)

时间:2013-04-23 12:46:55

标签: android listview

我正在构建一些自定义ListView,其中包含listViewItems,它们会在点击时展开。我做了第一个没有重大麻烦的,并且listViewItems在点击时正确扩展。

现在我正在构建另一个ListView,不同之处在于它包含多种项目,因此我发现让adaper包含视图列表而不是数据列表并创建getView(XX)提示它们时的视图。

一切正常,但新列表中的项目不会扩展,直到我来回交换活动重绘。我已经测试过模仿第一个listview中的实现(有几个缺点),这样就可以正确地重绘它们。

主要差异是这两行,第一行是第二行不重绘。

return new TransactionChild(context, attrs, transactions.get(position));

return (View) children.get(position); 

解决此问题的最佳方法是什么?尝试强制重绘整个列表(在展开视图上将其余部分向下移动......)?或者我可以用ListView或适配器做些什么?

帮助会很棒:D

1 个答案:

答案 0 :(得分:0)

您可以使用ExpandableListView,其中组没有任何子项,并且在组打开和关闭时具有不同的布局。

如果使用普通的ListView,我建议您使用适配器的getItemViewType()方法,这样就可以锁定正常和单击的项目列表,并在getView上检查类型并更改布局。在点击监听器上,您可以更改所单击项目的类型,并通知更改数据。