只需在您的Listener中添加一个属性变量即可。像这样:
listView.setOnItemClickListener(new OnItemClickListener(){
private Set<Integer> hasClickedSet = new HashSet<Integer>();
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id){
if (hasClickedSet.contains(position)){
v.setBackgroundColor(Color.BLACK);
} else {
v.setBackgroundColor(Color.GREEN);
hasClickedSet.add(position);
}
}
而且您不需要调用parent.getChildAt(position)。只需使用'v'参数即可。
========编辑============ 没关系,试试这个:
listView.setOnItemClickListener(new OnItemClickListener(){
private SparseArray<Boolean> hasClicked = new SparseArray<Boolean>();
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id){
if (hasClicked.get(position, false)){
v.setBackgroundColor(Color.RED);
hasClicked.put(position, false);
} else {
v.setBackgroundColor(Color.GREEN);
hasClicked.put(position, true);
}
}
当项目点击基于设置的其他背景颜色时,检查背景颜色。 – 2014-11-05 08:54:01
这只是一个建议,取决于你最终想做什么,但是你可以做一些类型的计数器,然后在inItemCLick中,只是看看有多少点击已经完成,并且改变了颜色的功能。可能会有些比这更好的方式,但同时你可以向前移动 – Shudy 2014-11-05 08:55:19