0
我目前正在構建一個Android議程活動,它包含4個ListView。基本上,我得到了一個WebServiceCoordinator調用的方法onAgendaDataReady(ArrayList約會)。此方法對約會進行排序,並以此方式填充4個新的ArrayList。代碼如下:與ArrayList使用ArrayAdapter
@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。 我的問題是:如何將由onAgendaDataReady()創建的ArrayList傳遞給我的Adapter?
我試着這樣做:
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 extends ArrayAdapter>'' –
Eliott
不,ArrayAdapter應該沒問題。看看ArrayAdapter的構造函數: http://developer.android.com/reference/android/widget/ArrayAdapter.html 它採用您選擇的類型T的列表或集合。 –
是的,謝謝!我正在使用add()而不是addAll()...它工作,非常感謝 – Eliott