Ich baue derzeit eine Android-Agenda Aktivität, die in 4 ListView besteht. Grundlegend habe ich die Methode onAgendaDataReady (ArrayList-Termine), die von einem WebServiceCoordinator aufgerufen wird. Diese Methode sortiert die Termine und füllt 4 neue ArrayList. Der Code ist die folgende:Verwenden ArrayAdapter mit ArrayList
@Override
public void onAgendaDataReady(ArrayList<Appointment> appointments) {
//swipeContainer.setRefreshing(false);
alert.hide();
ArrayList<Appointment> appointmentsfuturs = new ArrayList<>();
ArrayList<Appointment> appointmentspasses = new ArrayList<>();
ArrayList<Appointment> appointmentsannules = new ArrayList<>();
ArrayList<Appointment> appointmentsaconfimer = new ArrayList<>();
for (Appointment a : appointments) {
if (a.stateId == 2)
appointmentsaconfimer.add(a);
else if (a.stateId == 6)
appointmentsannules.add(a);
else if (a.stateId == 5)
appointmentspasses.add(a);
else if (a.stateId == 4)
appointmentsfuturs.add(a);
}
ArrayAdapter<Appointment> adapterfuturs = new ArrayAdapter<>(AgendaActivity.this, android.R.layout.simple_list_item_1, appointmentsfuturs);
ArrayAdapter<Appointment> adapterpasses = new ArrayAdapter<>(AgendaActivity.this, android.R.layout.simple_list_item_1, appointmentspasses);
ArrayAdapter<Appointment> adapterannules = new ArrayAdapter<>(AgendaActivity.this, android.R.layout.simple_list_item_1, appointmentsannules);
ArrayAdapter<Appointment> adapteraconfirmer = new ArrayAdapter<>(AgendaActivity.this, android.R.layout.simple_list_item_1, appointmentsaconfimer);
rdvFutursListView.setAdapter(adapterfuturs);
rdvPassesListView.setAdapter(adapterpasses);
rdvAnnulesListView.setAdapter(adapterannules);
rdvAConfirmerListView.setAdapter(adapteraconfirmer);
adapterfuturs.notifyDataSetChanged();
adapterpasses.notifyDataSetChanged();
adapterannules.notifyDataSetChanged();
adapteraconfirmer.notifyDataSetChanged();
}
Dieser Code funktioniert, aber ich will nicht mehr das android.R.layout.simple_list_item_1 Layout verwenden. Also habe ich einen ArrayAdapter mit einem benutzerdefinierten Layout erstellt. Mein Problem/Frage ist die folgende: Wie übergebe ich die ArrayList erstellt von onAgendaDataReady() an meinen Adapter?
Ich habe versucht, dies zu tun:
appointmentItemAdapter = new AppointmentItemAdapter(this);
rdvFutursListView.setAdapter(appointmentItemAdapter);
appointmentItemAdapter.add(adapterfuturs);
Aber die appointmentItemAdapter erfordert einen Termin und nicht eine Arraylist.
Danke für Ihre Hilfe
--------------- ENDLÖSUNG -----------------
AppointmentItemAdapter appointmentFutursItemAdapter = new AppointmentItemAdapter(AgendaActivity.this);
rdvFutursListView.setAdapter(appointmentFutursItemAdapter);
appointmentFutursItemAdapter.addAll(appointmentsfuturs);
appointmentFutursItemAdapter.notifyDataSetChanged();
Also muss ich zuerst meine Klassendeklaration zu diesem ändern: 'public class AppointmentItemAdapter erweitert ArrayAdapter>'? –
Eliott
Nein, ArrayAdapter sollte in Ordnung sein. Werfen Sie einen Blick auf die Konstruktoren von ArrayAdapter: http://developer.android.com/reference/android/widget/ArrayAdapter.html Es dauert eine Liste oder Sammlung des Typs T Sie wählen. –
Yup danke! Ich habe add() anstelle von addAll() verwendet ... Es funktioniert, vielen Dank – Eliott