2016-05-13 2 views
0

В настоящее время я занимаюсь разработкой 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(); 

ответ

0

Думаю, вы смешиваете здесь разные вещи.

Ваш заказ адаптер должен принять ArrayList (или любой коллекции) в качестве входного параметра и возвращает текущие элементы в списке (на основании положения запрошенной)

Так что не достаточно, чтобы пройти один Назначение в качестве параметра.

+0

Итак, я должен сначала изменить свое объявление класса: 'public class AppointmentItemAdapter расширяет ArrayAdapter >'? – Eliott

+0

Нет, ArrayAdapter должно быть хорошо. Посмотрите на конструкторы ArrayAdapter: http://developer.android.com/reference/android/widget/ArrayAdapter.html Требуется список или Коллекция выбранного вами типа T. –

+0

Yup спасибо! Я использовал add() вместо addAll() ... Он работает, спасибо большое – Eliott

Смежные вопросы