有时我注意到,对于 View v
- v.hasWindowFocus()==false
- ((View)v.getParent()).hasWindowFocus())==true
如果我正确理解文档,情况就不应该如此。
v.getParent()
是 ListView 的(子类)
关于可能导致这种情况的原因有什么想法吗?
注意:我认为 hasWindowFocus-mismatch 是根本原因这个问题 https://stackoverflow.com/questions/11242226/successfully-posted-runnable-only-gets-executed-when-parent-is-invalidated
主要原因是 ListView 不喜欢具有视图数组的适配器。
所以问题是由类似的代码触发的
public View getView (int position, View convertView, ViewGroup parent)
{
return _views[position];
}
当查看 ListView 代码(或者更确切地说,它的父 AbsListView.obtainView 方法)时,您会看到类似的代码
if (scrapView != null) {
...
child = mAdapter.getView(position, scrapView, this);
...
if (child != scrapView) {
mRecycler.addScrapView(scrapView);
有可能发生这样的情况getView(position,...)
使用 scrapView != _views[position] 调用,因此 scrapView 将被回收。另一方面,很可能相同的视图也再次添加到 ListView 中,导致视图出现奇怪的状态。
IMO 中应该修复此问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)