如何在一个GridView上使用两个适配器?
所以我试图创建一个GridView,并用两种不同类型的信息填充它,所以我尝试使用适配器这样做,例如:
GridView gridView = (GridView) view.findViewById(R.id.gridView);
ArrayList<Grids> cellArray = new ArrayList<>();
GridAdapter cellAdapter = new GridAdapter(this.getActivity(), cellArray);
gridView.setAdapter(cellAdapter);
Grids arrayOfCells[] = new Grids[grid];
for (int j = 0; j < arrayOfCells.length; j++) {
arrayOfCells[j] = new Grids(false);
cellAdapter.add(arrayOfCells[j]);
}
ArrayList<Time> arrayOfTime = new ArrayList<>();
timeAdapter adapter = new timeAdapter(this.getActivity(), arrayOfTime);
gridView.setAdapter(adapter);
Time arrayGrid[] = new Time[grid];
for (int i = 0; i < arrayGrid.length; i++) {
arrayGrid[i] = new Time(arrayOfHours[i], arrayOfPeriod[i]);
adapter.add(arrayGrid[i]);
}
但是,当我这样做时,只有第二个添加到gridView。那我该怎么做呢?非常感谢任何帮助。
答案 0 :(得分:1)
您只能在GridView上设置一个Adapter实例。当您设置第二个适配器时,它会替换第一个适配器。
要解决此问题,您需要将两个数据源组合在一起,并将它们放在一个Adapter中。一种方法是创建一个ArrayList并向其添加Grids和Time对象:
ArrayList<Object> adapterData = new ArrayList<Object>();
for (int j = 0; j < arrayOfCells.length; j++) {
adapterData.add(new Grids(false));
}
for (int i = 0; i < arrayGrid.length; i++) {
adapterData.add(new Time(arrayOfHours[i], arrayOfPeriod[i]));
}
TimeOrGridsAdapter adapter = new TimeOrGridsAdapter(this.getActivity(), adapterData);
gridView.setAdapter(adapter);
请注意,在这个新的TimeOrGridsAdapter中,您需要确定Object是Time还是Grids对象,然后相应地创建视图。