2013-07-18 64 views
0

我是Android編程的新手,我陷入了兩天似乎無法解決的困境。
我有一個ListActivity應該填充兩個不同的視圖幾乎沒有simulateity。直到現在我已經使用了MergeAdapter,它運行良好,但我的結果是這樣的: Adapter1,Adapter2。而且我沒有能力更改列表中項目的順序。 我的問題是:是否有可能創建一個適配器,其中包含兩個視圖的項目而不是兩個視圖的適配器,因此我將按照輸入它們的方式對我的項目進行排序? 爲了簡單起見,我得到了這兩個項目的ArrayList,每個都有「int position」,所以我可以將它們插入按位置排序的列表中。
編輯:我試過擴展BaseAdapter,但我再次需要兩個適配器,因爲我在線閱讀,但如果我這樣做,我將無法控制列表中的項目的位置。 我希望我這次更清楚。 歡迎任何迴應。
謝謝。Android - 帶有兩個視圖項目的ListView適配器

+0

是的,您可以擴展'BaseAdapter'來創建您自己的自定義適配器,重寫'getView()'並在其中執行所有的技巧。 –

回答

2

你也可以繼承BaseAdapter和利用以下方法:

getItemViewType(int position)

getViewTypeCount()

getViewTypeCount()應該回到你的適配器支持不同的行類型的數量。 getItemViewType()是你實現哪個視圖類型的特定行應該具有的「決定」。如果,例如,getViewTypeCount()返回圖3,然後getItemViewType()方法應返回0,1,或2。

可以使用此getView的內部膨脹/創建用於不同行類型不同的佈局。

編輯:

因爲它是一個自定義適配器,可以實現它在任何有意義的方式爲您的數據。如果您可以創建一個適合您需要的數據結構,那麼只需使適配器能夠使用它即可。在最壞的情況下,你可能只需要一個對象數組(或列表),並且必須使用instanceof來做決定工作。

+0

你能解釋一下嗎?正如我所說我有兩個意見。 item1.xml和item2.xml。我可以做什麼以便在一個列表中使用它們,同時可以選擇控制位置? – user2558461

+0

你實現了getviewtypecount返回兩個。在getItemViewType中,您爲項目1返回0,爲項目2返回1。那麼你可以實現getView而不必擔心在兩種類型之間轉換。這就是它所有 – nickmartens1980

+0

它的工作!我擴展了BaseAdapter並使用instanceof來做出決定。非常感謝! – user2558461

相關問題