J'ai une application qui a deux Intents
. D'abord afficher certains objets, le deuxième objets préférés qui sont des objets de la première Intent
mais marqué comme «favori». Quand je suis à la deuxième Intent
- favori, je veux objet non marqué pour devenir l'objet «régulier» et puis quand je clique sur back button
la liste des objets rafraîchis et disply un bouton d'activation «ajouter au favori». Mais cela ne fonctionne pas:NotifyDataSetChanged au bouton de retour ne fonctionne pas
préférée intent
:
public class FavWashActivity extends Activity{
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
private MyAdapter myAdapter;
private List<WashLocation> washLocations;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.favorite_wash);
mRecyclerView = (RecyclerView) findViewById(R.id.fav_recycler_view);
DataBaseHelper dataBaseHelper = new DataBaseHelper(getApplicationContext());
washLocations = dataBaseHelper.getFavouriteWashLocation();
mAdapter = new MyAdapterFavWash(washLocations, this);
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
myAdapter = new MyAdapter(null, this, null);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
onBackPressed();
}
return false;
}
@Override
public void onBackPressed() {
super.onBackPressed();
myAdapter.notifyDataSetChanged();
}
}
Et le adapter
qui doit être rafraîchi:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<WashLocation> washLocations;
private LayoutInflater layoutInflater;
private DataBaseHelper dataBaseHelper;
private Map<String, Integer> queueToWash;
public MyAdapter(List<WashLocation> washLocations, Context context, Map<String, Integer> queueToWash) {
layoutInflater = LayoutInflater.from(context);
this.washLocations = washLocations;
dataBaseHelper = new DataBaseHelper(context);
this.queueToWash = queueToWash;
}
vous devez actualiser votre liste dans 'onResume' dans le premier' Activity' au lieu de 'onBackPressed' –
fonctionne! merci: D – bielas
rafraichir les données dans onResume n'est pas un bon moyen, car si l'utilisateur appuie sur home et retourne à votre activité vous actualisez la liste qui est redondante, mieux vaut onActivityResult et si l'utilisateur change un élément dans la seconde activité, actualisez la liste, Sinon, ne pas actualiser les données. –