Update categories list after app list update.

This commit is contained in:
Peter Serwylo 2014-02-11 09:02:03 +11:00
parent e4d106a298
commit ef784dffa8

View File

@ -1,5 +1,6 @@
package org.fdroid.fdroid.views.fragments; package org.fdroid.fdroid.views.fragments;
import android.database.ContentObserver;
import android.database.Cursor; import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
@ -51,12 +52,37 @@ public class AvailableAppsFragment extends AppListFragment implements
// functionality do its stuff. // functionality do its stuff.
spinner.setId(R.id.categorySpinner); spinner.setId(R.id.categorySpinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), final ArrayAdapter<String> adapter = new ArrayAdapter<String>(
android.R.layout.simple_spinner_item, categories); getActivity(), android.R.layout.simple_spinner_item, categories);
adapter.setDropDownViewResource( adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item); android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter); spinner.setAdapter(adapter);
getActivity().getContentResolver().registerContentObserver(
AppProvider.getContentUri(), false,
new ContentObserver(null) {
@Override
public void onChange(boolean selfChange) {
// Wanted to just do this update here, but android tells
// me that "Only the original thread that created a view
// hierarchy can touch its views."
getActivity().runOnUiThread( new Runnable() {
@Override
public void run() {
adapter.clear();
adapter.addAll(AppProvider.Helper.categories(getActivity()));
// adapter.notifyDataSetChanged();
}
});
}
@Override
public void onChange(boolean selfChange, Uri uri) {
onChange(selfChange);
}
}
);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override @Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
@ -71,7 +97,6 @@ public class AvailableAppsFragment extends AppListFragment implements
getLoaderManager().restartLoader(0, null, AvailableAppsFragment.this); getLoaderManager().restartLoader(0, null, AvailableAppsFragment.this);
} }
}); });
return spinner; return spinner;
} }