w zmianie preferencji słuchacza mam ustawić go pobrać nowe dane za pomocą Loader
a następnie wypełnić ListView
, ale tylko funkcja onCreateLoader()
nazywa kiedy zmienić preferencje, funkcja onLoadFinished()
zwrotna pozostaje bezsensowne zachowanie, stąd moja ListView
w nie aktualizowany o nowe dane, ja też zdarzy się, że przycisk odświeżania, który robi to samo, to znaczy pobiera przyrost danych i wypełnia listę z nowymi danymi, ale tutaj w onLoadFinished()
nazywa stąd poprzez aktualizację wykazu.Loader onLoadFinished() nie nazywa
Kod przycisk odświeżania
case R.id.menu_refresh :
ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
if(isConnected)
{
getSupportLoaderManager().initLoader(0,null,this).forceLoad();
}
else {
Toast.makeText(this,"No Internet",Toast.LENGTH_SHORT).show();
}
break;
Kod SharedPreference słuchacz:
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
if(isConnected)
{
//delfromold();
getSupportLoaderManager().initLoader(0,null,this).forceLoad();
Log.v("Prefrences Changed",s);
}
}
EDIT
Loader Realizacja
public class Loade extends AsyncTaskLoader<ArrayList<CustomL>>{
Context mCon;
public Loade(Context context) {
super(context);
mCon = context;
}
@Override
public ArrayList<CustomL> loadInBackground() {
ArrayList<CustomL> maList = null;
try {
Log.v("Loader","Called");
maList = GetList.makelist(mCon);
} catch (JSONException e) {
e.printStackTrace();
}
return maList;
}
}
Ładowarka:
public Loader<ArrayList<CustomL>> onCreateLoader(int id, Bundle args) {
return new Loade(this);
}
public void onLoadFinished(Loader<ArrayList<CustomL>> loader, ArrayList<CustomL> data) {
Log.v("Load","Finished");
maklst(data);
}
W makelist funkcji klasy getlist nowe dane zostaną pobrane i zapisane w tabeli i może potwierdzić, że, ale jej po prostu nie zatrzymać onLoadFinished dosnt sprawdzony i maklst funkcja, która aktualizuje listę z nowymi danymi nie nazywa, ale kiedy Wywołuję ten sam program ładujący z odświeżania wywołania onLoadFinished –