只需在您的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