嗯,我终于解决了这个问题,希望这可以帮助别人:
我所做的就是创建一个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