Ich habe eine App, die zwei Intents
hat. Zuerst werden einige Objekte angezeigt, die zweiten Objekte sind Objekte aus der ersten Intent
, aber als 'Favorit' markiert. Wenn ich bei der zweiten Intent
- Favorit bin, möchte ich ein Objekt als "normales" Objekt unmarkiert werden und dann, wenn ich back button
klicken Sie auf die Liste der Objekte aktualisiert und zeigen eine Schaltfläche "zum Favoriten hinzufügen". Aber es funktioniert nicht:NotifyDataSetChanged auf der Rückseite funktioniert nicht
Lieblings 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();
}
}
Und die adapter
, die aktualisiert werden muss:
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;
}
Sie müssen Ihre Liste in 'onResume' in der ersten' Activity' aktualisieren anstelle von 'onBackPressed' –
funktioniert! Danke: D – bielas
das Aktualisieren von Daten in onResume ist kein guter Weg, denn wenn der Benutzer nach Hause und zurück zu Ihrer Aktivität drückt, aktualisieren Sie die Liste, die überflüssig ist, besser ist 'onActivityResult' und wenn Benutzer irgendein Element in der zweiten Aktivität ändert, aktualisieren Sie Liste, Ansonsten aktualisieren Sie die Daten nicht. –