【发布时间】:2016-08-10 18:08:53
【问题描述】:
Android GridView 很有趣,它重用了子视图。向上滚动的那些从底部返回。因此,GridView 没有任何方法可以通过其位置获取子视图。但我真的需要通过它的位置来了解它并做一些工作。为此,我创建了一个SparseArray,并根据他们的位置从getView 或BaseAdapter 中放置视图。
SparseArray<View> ViewArray = new SparseArray<View>();
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null)
view = li.inflate(layoutID, null);
ViewArray.put(position, view);
}
现在,我可以按位置获取所有可见视图。一切正常,但在某些设备中,第一个子视图(位置 0)与数组中的不同。我记录了getView,发现对于位置0,getView 被调用了很多次,并且每次数组都设置了不同的视图。我不知道为什么 GridView 多次为位置 0 调用 getView 并且这只发生在少数设备上。有什么解决办法吗?
【问题讨论】: