Android将多个适配器设置为一个listview

时间:2015-07-20 06:49:49

标签: android android-listview

我有2个适配器,每个适配器包含我想要放入一个列表视图的不同API。如何在不更换第一个适配器的情况下设置第二个适配器?在此之前谢谢:)

pcAPI = (ArrayList<ListAPI>) parsepcAPI(pcTemp);
artistAPI = (ArrayList<ListAPI>) parseArtistAPI(artistTemp);

lvAPI = (ListView) findViewById(R.id.lvAPI);

Song_APIAdapter adapter = new Song_APIAdapter(getApplicationContext(), pcAPI);
lvAPI.setAdapter(adapter);

Song_APIAdapter adapter2 = new Song_APIAdapter(getApplicationContext(), artistAPI);
lvAPI.setAdapter(adapter2);

3 个答案:

答案 0 :(得分:1)

尝试此代码,它将合并适配器

update tableb b set name= (select a.name from tablea a
    inner join
    tableb b
    on
    a.id=b.id)

答案 1 :(得分:0)

尝试将2个适配器合并到一个适配器中,如下所示:

android attaching multiple adapters to one adapter

或者,您可以将两个ArrayLists合并为一个,然后设置Adapter。实际上就是你正在做的事情。

或者您可以先将pcAPI设置为适配器,然后将artistAPI添加到pcAPI,然后再次设置新适配器。并致电adapter.notifyDataSetChanged()

为什么你不能这样做?

pcAPI = (ArrayList<ListAPI>) parsepcAPI(pcTemp);
artistAPI = (ArrayList<ListAPI>) parseArtistAPI(artistTemp);

ArrayList<ListAPI> mergedList = new ArrayList<ListAPI>();
mergedList.addAll(pcAPI);
mergedList.add(artistAPI);

Song_APIAdapter adapter = new Song_APIAdapter(getApplicationContext(), mergedAPI);
lvAPI.setAdapter(adapter);

答案 2 :(得分:0)

通常,您不应该将2个适配器用于1个列表视图。 Adatper是将数据转换为视图的接口。

在您的情况下,您的列表视图显示2种数据。所以你应该创建一个全新的适配器,从pcAPI和artistAPI读取数据,然后生成一个新视图并将其传递给ListView。

如果你只是需要交替显示pcView和artistView,有一个简单的方法:

  1. 创建一个新的适配器,并将适配器和适配器2传递给它。

  2. 覆盖getCount(),getCount = adapter.getCount()+ adapter2.getCount();

  3. 覆盖getView,对于奇数项返回adapter.getView(...),对于偶数项返回adapter2.getCount();
  4. 我不知道你想要什么样的观点,所以我猜你的要求。