2011-07-01 89 views
0

我有一個包含25個不同項目的列表視圖。當我點擊一個項目時,相應的聲音文件被添加到一個數組中,從索引0開始,當更多的項目被選中時,每個相應的聲音文件被添加到數組的下一個索引中。因此,按下播放按鈕時,與索引0關聯的聲音文件播放,然後播放索引1的聲音,依此類推,直到沒有更多索引。隨着這一點(可能是不必要的)背景信息,我如何將圖像添加到當前正在播放的項目的列表視圖?像iPod一樣,我想在當前播放聲音的右側顯示一個圖標。我有一個圖標,我可以顯示它,但我不知道如何根據播放的聲音/數組索引來告訴它顯示哪一行。我已經閱讀了關於向列表視圖添加圖像的不同教程,但沒有關於只將一個圖像添加到特定行的內容。安卓顯示圖像的特定行列表視圖

回答

1

爲了解決您的問題,我認爲您可能需要通過重寫抽象方法來實現自己的子類BaseAdapter。像SimpleAdapter和SimpleCursorAdapter一樣,新的適配器將數據(您的案例中的聲音文件)綁定到列表中,但是您的BaseAdpater應該能夠找到列表中每個位置應該出現的視圖類型,並且能夠生成正確的列表查看項目。

您需要覆蓋BaseAdapter的方法來滿足您的需求。最重要的是如下:

int getViewTypeCount(); 

在你的情況下,列表包含兩個項目類:打還是不玩了,所以這個方法應該返回2.

int getItemViewType(int position); 

你需要把一些邏輯在這裏檢查參數位置的聲音文件是否正在播放?如果位置上的項目正在播放,則應該返回一個類似TYPE_PLAYING的常量int,否則返回TYPE_NONPLAYING(當然,您需要提前定義這些常量)。

View getView(int position, View convertView, ViewGroup parentview); 

這種方法中最有待辦事項,我覺得你可以按照下面的步驟:

  1. 查找項目在位置的類型,無論是TYPE_PLAYING或TYPE_NONPLAYING

  2. 得到一個LayoutInflater的實例爲不同的佈局文件添加兩種不同類型的項目,TYPE_PLAYING項目應該包含圖像以指示該項目的相應文件正在播放。請注意,您需要一個Context變量來檢索LayoutInflater。您可以在適配器中聲明一個Context成員,並在Adapter的構造函數中初始化它。

  3. 綁定每個文件的其他信息:文件名,時間長度等

如果正在播放的文件通過點擊列表項或其他交互更改,不要忘記調用BaseAdapter的notifyDatasetChanged ()方法刷新列表。

願意幫忙嗎?