好吧,我终于解决了,希望这对某人有所帮助:
我所做的是创建一个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 的适配器时
希望这对任何人都有帮助,因为这是一个通用的答案:)