我有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);
答案 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,有一个简单的方法:
创建一个新的适配器,并将适配器和适配器2传递给它。
覆盖getCount(),getCount = adapter.getCount()+ adapter2.getCount();
我不知道你想要什么样的观点,所以我猜你的要求。