2011-03-22 46 views
0

我想讓ListView帶圖像。像this。 但一些項目只有文本,沒有圖像。對於那些我只想顯示文字的物品。 我該怎麼做?ListView帶圖像

+0

您的鏈接已損壞。這會導致downvotes – 2015-12-31 16:13:16

回答

1

列表視圖中的每個項目都是一個單獨的視圖,可以根據需要創建。只需在您的適配器類的GetView方法中從兩個單獨的佈局膨脹一個視圖即可。

事情是這樣的:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    return new MyViewItem(getImage(), getText(), parent); 
} 

***** 
class MyViewItem extends LinearLayout 
{ 
    public MyViewItem(ImageClass image, String text, ViewGroup parent) { 
     super(parent); 

     View.inflate(parent, image==null?R.layout.layout1:R.layout.layout2, this); 

     //Now assign correct text and image using this.findViewById() function. 
    } 
} 

我讓你定義佈局1和佈局2,以及如何處理實際的圖像和文字,但是這應該做的伎倆。

+0

謝謝你的回答。但我有幾個問題。 1.我需要擴展SimpleAdapter來覆蓋getView方法嗎? 2.什麼是MyViewItem構造函數中的ImageClass? Eclipse不能識別它3.什麼是View.inflate中的mParent? – shtkuh 2011-03-22 12:19:58

+0

mParent是一個錯字,我編輯了答案,它應該是父項。 ImageClass只是一個名字,但是您用於圖像的實際類。或者可能是int,如果它是你將顯示的圖像的資源ID。請記住,我不知道你的代碼,所以我不能說最簡單的解決方案是什麼,但我總是喜歡重寫課程,因爲它給了你最強大的力量,而且你將永遠不會像今天那樣陷入簡單的任務。所以,是的,請覆蓋適配器。我使用'BaseAdapter'作爲基類,但可能SimpleAdapter會工作。 – zmilojko 2011-03-22 12:39:24

0

你也可以有1個視圖,但是當你不想讓圖像出現時,只需將圖像的可見性設置爲GONE即可。只要你已經適當地設置你的佈局,文本應該再次彈出到邊緣就好了!

+0

謝謝你的回答。但我有一個虛擬的問題。我應該在哪裏設置可視性? – shtkuh 2011-03-22 12:29:05

+0

構成該行的圖像視圖上的'setVisiblity(View.GONE)' – Kurru 2011-03-22 18:26:59