В настоящее время я занимаюсь разработкой Android Agenda, состоящей из 4 ListView. В основном, я получил метод onAgendaDataReady (встречи ArrayList), который вызывается WebServiceCoordinator. Этот метод сортирует встречи и таким образом, заполняет 4 новых ArrayList. Код состоит в следующем:Использование ArrayAdapter с 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();
}
Этот код работает, но я не хочу больше, чтобы использовать макет android.R.layout.simple_list_item_1. Поэтому я построил ArrayAdapter с настраиваемой компоновкой. Моя проблема/вопрос в следующем: как передать ArrayList, созданный onAgendaDataReady(), в мой адаптер?
Я пытался сделать это:
appointmentItemAdapter = new AppointmentItemAdapter(this);
rdvFutursListView.setAdapter(appointmentItemAdapter);
appointmentItemAdapter.add(adapterfuturs);
Но appointmentItemAdapter требует назначение и не ArrayList.
Спасибо за вашу помощь
--------------- окончательное решение -----------------
AppointmentItemAdapter appointmentFutursItemAdapter = new AppointmentItemAdapter(AgendaActivity.this);
rdvFutursListView.setAdapter(appointmentFutursItemAdapter);
appointmentFutursItemAdapter.addAll(appointmentsfuturs);
appointmentFutursItemAdapter.notifyDataSetChanged();
Итак, я должен сначала изменить свое объявление класса: 'public class AppointmentItemAdapter расширяет ArrayAdapter>'? –
Eliott
Нет, ArrayAdapter должно быть хорошо. Посмотрите на конструкторы ArrayAdapter: http://developer.android.com/reference/android/widget/ArrayAdapter.html Требуется список или Коллекция выбранного вами типа T. –
Yup спасибо! Я использовал add() вместо addAll() ... Он работает, спасибо большое – Eliott