所以我现在比较迷茫。我正在使用 XML 布局,所以我可以显示一个空视图,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@string/samples_empty"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >
</ListView>
</RelativeLayout>
正如你可能已经在这里看到了十亿次。
所以我做了 setContentView(R.layout.foo) 并且它第一次工作,但是如果我返回这个活动(如 onPause 被调用然后 onResume)我得到这个:
我调用notifyDataSetChanged();
适配器并且工作正常,我不明白为什么它被绘制两次?
它不像我正在创建一个新的 ListView 然后将其添加到视图中,我相信如果我知道的话我会知道的。
适配器的getView
方法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
RecordView av;
if(convertView == null){
av = new RecordView(mCtx, this, mRecords[position], position);
}else{
av = (RecordView) convertView;
av.setRecord(mRecords[position]);
}
return av;
}
这将是它通常看起来的样子......
笔记
这似乎不是每次都发生,也不会发生在单个事件发生时,但是当它发生时,它是当我从另一个屏幕返回时。
更新
我注意到当我在顶部有另一个活动时(透明的东西,比如 facebook 聊天头,然后我可以看到问题已经发生了,它似乎没有发生在 onResume 上,但更有可能发生在我实际上的 onPause 上不要在里面做任何事情。