2015-07-20 112 views
0

我有2個適配器,其中每個適配器都包含不同的API,我想將其放入一個列表視圖。我如何設置第二個適配器而不更換第一個適配器?前:)Android將多個適配器設置爲一個列表視圖

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

你能描述哪些適配器的內容可能有解決方案嗎? – Raghunandan

+0

https://github.com/commonsguy/cwac-merge – Renjith

+0

在pcAPI和artistAPI中添加項目並調用'adapter.notifyDataSetChanged();' –

回答

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); 
+0

非常感謝你的工作:) 我是新來的機器人,經常會感到困惑哈哈 –

+0

我很高興它做到了。如果解決了您的問題,您可以將答案標記爲已接受。這也有助於未來的用戶。謝謝。 –

1

試試這個代碼將合併適配器

Song_APIAdapter adapter = new Song_APIAdapter(getApplicationContext(), pcAPI); 
    lvAPI.setAdapter(adapter); 
    Song_APIAdapter adapter2 = new Song_APIAdapter(getApplicationContext(), artistAPI); 
    adapter.addAdapter(adapter2); 
0

通常情況下,你不應該使用2個適配器1名列表視圖。 Adatper是將數據轉換爲視圖的界面。

就你而言,你的listview顯示2種數據。所以你應該創建一個全新的適配器,它從pcAPI和artistAPI讀取數據,然後生成一個新視圖並將其傳遞給ListView。

如果你只需要顯示pcView和artistView交替,有一個簡單的方法:

  1. 創建一個新的適配器,並通過適配器和適配器2到它。

  2. override getCount(),getCount = adapter.getCount()+ adapter2.getCount();

  3. 重寫getView,對於奇數項返回adapter.getView(...),對於偶數項返回adapter2.getCount();

我不知道你想要什麼樣的觀點,所以我只是猜測你的要求。

相關問題