в изменении предпочтений слушателя я установить его для загрузки новых данных с помощью Loader
, а затем заполнить ListView
, но только функцию onCreateLoader()
вызывается при изменении предпочтений, функция onLoadFinished()
обратного вызова остается невостребованной, следовательно, мой ListView
не обновлен новыми данными, у меня также есть кнопка обновления, которая делает то же самое, то есть загружает данные и заполняет список новыми данными, но здесь onLoadFinished()
называется, следовательно, обновляя список.погрузчик onLoadFinished() не вызывается
Кнопка Обновить код
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;
Код SharedPreference Слушатель:
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
погрузчик Реализация
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;
}
}
погрузчик:
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);
}
В функции makelist класса Getlist новые данные загружаются и сохраняются в таблице. Я могу подтвердить это, но его просто прекратить там вызов onLoadFinished dosnt и функцию maklst, которая обновляет список новыми данными, никогда не вызывается, но когда я вызываю тот же загрузчик из обновления, на который называется onLoadFinished –