Android:如何让GridView填充2个适配器

时间:2015-08-02 00:31:48

标签: android gridview

如何在一个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。那我该怎么做呢?非常感谢任何帮助。

1 个答案:

答案 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对象,然后相应地创建视图。