嗯,我終於解決了這個問題,希望這可以幫助別人:
我所做的就是創建一個ArrayList<Integer>
存儲所選項目的所有位置,以及切換背景顏色點擊次數。
以我適配器我定義:
public ArrayList<Integer> selectedIds = new ArrayList<Integer>();
以下方法:
public void toggleSelected(Integer position)
{
if(selectedIds.contains(position))
{
selectedIds.remove(position);
}
else
{
selectedIds.add(position);
}
}
其中就將此\從該ArrayList
移除項以我getView方法:
if (selectedIds.contains(position)) {
convertView.setSelected(true);
convertView.setPressed(true);
convertView.setBackgroundColor(Color.parseColor("#FF9912"));
}
else
{
convertView.setSelected(false);
convertView.setPressed(false);
convertView.setBackgroundColor(Color.parseColor("#000000"));
}
這將檢查該位置是否存儲在ArrayList中。如果是,則將其繪製爲選定的。如果不是,則相反。
所有剩下的只有OnItemClick聽者,我說:
((YourAdapter)list.getAdapter()).toggleSelected(new Integer(position));
當YourAdapter是你的ListView
希望的適配器,這可以幫助任何人,因爲它是一個通用的答案:)
我面臨着同樣的問題,但是在您的解決方案中,我無法理解什麼是「列表」? – Rohit
這就是我在OnItemClick事件中命名的方式 –
完美的答案,非常感謝! – Claud