2014-11-08 54 views
0

我通過遵循Android Interview上的教程創建了自定義ListView。這裏的鏈接: http://www.androidinterview.com/android-custom-listview-with-image-and-text-using-arrayadapter/如何將切換小部件添加到列表視圖中的一行?

我想添加一個開關小部件到第一行的ListView。如何才能做到只有1行或一些特定的行,如第1,第4,第7,第16等?

+0

創建自定義適配器。 – 2014-11-08 10:41:08

+0

@HareshChhelana已經有一個自定義適配器。我想添加切換到只有1行。如何修改佈局,以便可以將切換僅添加到1行? – 2014-11-08 10:54:56

+0

嘗試將開關置於列表項目佈局上,並在getView()中隱藏/顯示基準位置。 – 2014-11-08 10:55:54

回答

2

如果你是新的列表視圖,簡單的答案是:

  1. 在您的基本佈局中放置一個開關。在您鏈接的示例中,佈局文件是其ID爲R.layout.mylist的xml文件。

  2. 隱藏開關的每個不是位置0的位置,否則顯示。由於視圖回收,您不能依賴默認設置,所以您必須隱藏或顯示。

更先進的答案是:

  1. 使用基本適配器,因爲它有方法getViewType和getViewTypeCount(陣列適配器沒有)。你將不得不編碼你的數組和視圖元素之間的關係,如果你對listViews/adapters不熟悉,這可能太令人生畏了。

  2. 創建兩個佈局(xml文件),一個與開關。

  3. 重寫getViewType和getViewTypecount。

你有兩種視圖類型了,所以getViewTypeCount應該返回2,getViewType應該爲每個未定位0,而對於其餘返回1位置返回0。

  1. 在getView中,如果null爲正確的佈局,則充氣convertView。你可以調用getViewType(position)並打開結果。

這樣做的好處是適配器只會將正確的視圖類型傳遞給適配器,所以每次調用getView時都不必隱藏/取消隱藏開關。 Android僅製作一個具有開關的佈局。因此,它更有效率。

0

您可以發送另一個參數列表視圖的適配器,並如果condetion在適配器

如果(參數== 1)

{顯示切換}

+0

我可以使用getView()位置參數獲取行的位置,但是如何將切換僅添加到該特定行? – 2014-11-08 10:50:16

0

我已經修改了我的佈局以將開關小部件添加到所有行,然後將每個行中除第1行之外的每個開關的可見性設置爲「GONE」。

public View getView(int position,View view,ViewGroup parent) { 
    LayoutInflater inflater = context.getLayoutInflater(); 
    View rowView = inflater.inflate(R.layout.mylist, null,true); 
    Switch mSwitch = (Switch) rowView.findViewById(R.id.switch1); 

    if(position != 0) { 
     mSwitch.setVisibility(View.GONE); 
    } 

    return rowView; 
}; 
相關問題