Android 在Samsung Galaxy S2上调用了两次ListView.setAdapter未正确更新

Android 在Samsung Galaxy S2上调用了两次ListView.setAdapter未正确更新,android,listview,listadapter,Android,Listview,Listadapter,最初在我的片段中,我调用 listView.setAdapter(myAdapater); 此适配器有一个包含0个元素的列表,当发生这种情况时,将插入一行,占据整个列表(显示加载图像)。api请求获取数据后,适配器将更新并 myAdapter.notifyDataSetChanged(); 被称为。这在除三星Galaxy S2之外的所有手机上都可以正常工作,加载行仍然作为列表中的第一行出现,当您开始滚动时,您将看到预期的第二行出现在视图中。如果从屏幕上滚动第一行,然后返回屏幕,这将用正确的行

最初在我的片段中,我调用

listView.setAdapter(myAdapater);
此适配器有一个包含0个元素的列表,当发生这种情况时,将插入一行,占据整个列表(显示加载图像)。api请求获取数据后,适配器将更新并

myAdapter.notifyDataSetChanged();
被称为。这在除三星Galaxy S2之外的所有手机上都可以正常工作,加载行仍然作为列表中的第一行出现,当您开始滚动时,您将看到预期的第二行出现在视图中。如果从屏幕上滚动第一行,然后返回屏幕,这将用正确的行替换加载行


第二次尝试-

我没有这样处理它,而是创建了第二个适配器

public class LoadingAdapter extends BaseAdapter {}
然后,当片段开始时:

listView.setAdapter(loadingAdapter);
在api请求之后

listView.setAdapter(myAdapter);
此时列表完全为空,但应呈现列表,仅显示背景。我玩了这个,做了些什么

listView.setAdapter(myAdapter);
listView.setAdapter(myAdapter);
导致刚刚显示相同的背景问题

欢迎任何建议!谢谢

此适配器有一个包含0个元素的列表,发生这种情况时,将插入一行,占据整个列表(显示加载图像)


这不是在适配器为空时显示视图的最佳方式。相反,当适配器为空时,应该使用ListView的方法设置要显示的特定视图,而不是ListView。通常,这应该是与ListView处于同一级别的视图(即,使用同时包含ListView和空视图的FrameLayout)。

听起来像是视图回收问题。我在
getView
中为适配器(在本例中为myAdapter)提供了打印语句。在其他设备上,当调用
notifyDataSetChanged
时,调用
getView
,但在S2上未调用。从未尝试加载视图以进行回收=/同意,我们最初设置了它,但后来在发布android v4支持库布局之前实现了它。我们现在正在使用该支持库,但尚未切换回使用空视图。不管怎样,这都无助于解决交换适配器的问题。谢谢你的回复。