Merge "Fix incorrect updating of headers in Settings" into jb-dev

This commit is contained in:
Amith Yamasani
2012-06-20 15:45:05 -07:00
committed by Android (Google) Code Review

View File

@@ -52,6 +52,7 @@ import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button; import android.widget.Button;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ListAdapter; import android.widget.ListAdapter;
@@ -71,6 +72,7 @@ public class Settings extends PreferenceActivity
implements ButtonBarHandler, OnAccountsUpdateListener { implements ButtonBarHandler, OnAccountsUpdateListener {
private static final String LOG_TAG = "Settings"; private static final String LOG_TAG = "Settings";
private static final String META_DATA_KEY_HEADER_ID = private static final String META_DATA_KEY_HEADER_ID =
"com.android.settings.TOP_LEVEL_HEADER_ID"; "com.android.settings.TOP_LEVEL_HEADER_ID";
private static final String META_DATA_KEY_FRAGMENT_CLASS = private static final String META_DATA_KEY_FRAGMENT_CLASS =
@@ -108,7 +110,6 @@ public class Settings extends PreferenceActivity
// TODO: Update Call Settings based on airplane mode state. // TODO: Update Call Settings based on airplane mode state.
protected HashMap<Integer, Integer> mHeaderIndexMap = new HashMap<Integer, Integer>(); protected HashMap<Integer, Integer> mHeaderIndexMap = new HashMap<Integer, Integer>();
private List<Header> mHeaders;
private AuthenticatorHelper mAuthenticatorHelper; private AuthenticatorHelper mAuthenticatorHelper;
private Header mLastHeader; private Header mLastHeader;
@@ -189,6 +190,7 @@ public class Settings extends PreferenceActivity
if (listAdapter instanceof HeaderAdapter) { if (listAdapter instanceof HeaderAdapter) {
((HeaderAdapter) listAdapter).resume(); ((HeaderAdapter) listAdapter).resume();
} }
invalidateHeaders();
} }
@Override @Override
@@ -369,8 +371,6 @@ public class Settings extends PreferenceActivity
loadHeadersFromResource(R.xml.settings_headers, headers); loadHeadersFromResource(R.xml.settings_headers, headers);
updateHeaderList(headers); updateHeaderList(headers);
mHeaders = headers;
} }
private void updateHeaderList(List<Header> target) { private void updateHeaderList(List<Header> target) {
@@ -730,17 +730,11 @@ public class Settings extends PreferenceActivity
@Override @Override
public void setListAdapter(ListAdapter adapter) { public void setListAdapter(ListAdapter adapter) {
if (mHeaders == null) { if (adapter == null) {
mHeaders = new ArrayList<Header>(); super.setListAdapter(null);
// When the saved state provides the list of headers, onBuildHeaders is not called } else {
// Copy the list of Headers from the adapter, preserving their order super.setListAdapter(new HeaderAdapter(this, getHeaders(), mAuthenticatorHelper));
for (int i = 0; i < adapter.getCount(); i++) {
mHeaders.add((Header) adapter.getItem(i));
}
} }
// Ignore the adapter provided by PreferenceActivity and substitute ours instead
super.setListAdapter(new HeaderAdapter(this, mHeaders, mAuthenticatorHelper));
} }
@Override @Override