2011-07-07 31 views
3

我有一个ListView问题,它可以回收屏幕上可见的视图。 我的ListView中最多可以有4个项目,它们都可以在屏幕上看到。 我更新ListAdapter使用的ArrayList中的对象的属性后,我调用列表适配器的notifyDataSetChanged()方法。 这会导致ListView回收视图并自行重画它。 问题是,它正在以相反的顺序进行回收。所以如果我在第一个ListView项目上有一个按钮,它将在notifyDataSetChanged()之后的第二个列表视图项目中。 我有getView更改convertView属性,除了按钮onTouchListener。
这是非常成问题的,如果我有一个按钮,与触摸事件(像PTT按钮)一起使用。它可见一段时间,然后它变得不可见:-(。 1.为什么ListView回收在屏幕上可见的项目是这种正常行为?为什么它以相反的顺序? 2.我该怎么做解决我的问题?在屏幕上可见的ListView回收视图

+1

你能否从你的适配器添加一些代码? –

+1

这正是你应该从列表视图框架期望的行为,引用**谷歌Android工程师罗曼盖伊**不保证将调用getView()'多少次,所以你不用担心,也你需要确保你的'Listview'** **高度/宽度**不应该是'wrap_content'关于list view回收机制如何工作的更多细节请参考http://stackoverflow.com/a/14108676/1939564 –

回答

0

你应该为getview()方法提供代码。并添加按钮将项目可能导致当你不使用的添加按钮,检查问题。 而不是增加按钮,你应该在所有项目按钮,只是让在你想要的特定位置可见不可见的按钮 也可以在getview()方法中检查“null”是否为创建convertview,如果它们不为空,它将不会回收/创建视图/项目

相关问题