我通過遵循Android Interview上的教程創建了自定義ListView。這裏的鏈接: http://www.androidinterview.com/android-custom-listview-with-image-and-text-using-arrayadapter/如何將切換小部件添加到列表視圖中的一行?
我想添加一個開關小部件到第一行的ListView。如何才能做到只有1行或一些特定的行,如第1,第4,第7,第16等?
我通過遵循Android Interview上的教程創建了自定義ListView。這裏的鏈接: http://www.androidinterview.com/android-custom-listview-with-image-and-text-using-arrayadapter/如何將切換小部件添加到列表視圖中的一行?
我想添加一個開關小部件到第一行的ListView。如何才能做到只有1行或一些特定的行,如第1,第4,第7,第16等?
如果你是新的列表視圖,簡單的答案是:
在您的基本佈局中放置一個開關。在您鏈接的示例中,佈局文件是其ID爲R.layout.mylist的xml文件。
隱藏開關的每個不是位置0的位置,否則顯示。由於視圖回收,您不能依賴默認設置,所以您必須隱藏或顯示。
更先進的答案是:
使用基本適配器,因爲它有方法getViewType和getViewTypeCount(陣列適配器沒有)。你將不得不編碼你的數組和視圖元素之間的關係,如果你對listViews/adapters不熟悉,這可能太令人生畏了。
創建兩個佈局(xml文件),一個與開關。
重寫getViewType和getViewTypecount。
你有兩種視圖類型了,所以getViewTypeCount應該返回2,getViewType應該爲每個未定位0,而對於其餘返回1位置返回0。
這樣做的好處是適配器只會將正確的視圖類型傳遞給適配器,所以每次調用getView時都不必隱藏/取消隱藏開關。 Android僅製作一個具有開關的佈局。因此,它更有效率。
您可以發送另一個參數列表視圖的適配器,並如果condetion在適配器
如果(參數== 1)
{顯示切換}
我可以使用getView()位置參數獲取行的位置,但是如何將切換僅添加到該特定行? – 2014-11-08 10:50:16
我已經修改了我的佈局以將開關小部件添加到所有行,然後將每個行中除第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;
};
創建自定義適配器。 – 2014-11-08 10:41:08
@HareshChhelana已經有一個自定義適配器。我想添加切換到只有1行。如何修改佈局,以便可以將切換僅添加到1行? – 2014-11-08 10:54:56
嘗試將開關置於列表項目佈局上,並在getView()中隱藏/顯示基準位置。 – 2014-11-08 10:55:54