註:使用別種方法,有可能在ListView項目超出螢幕時產生重繪的錯亂,造成多筆變色或是變色項目亂跳的情況,所以完成後應先確認上述情況是否有發生。
若你並沒有已經客製化的Adapter,可以參考Android學習_客製化ListView_加上Button
----------------------實作----------------------
1. 對Adapter加工
A. 建立一記載點擊項次的變數
private int selectItem=-1;
B. 增加setSelectItem的公開方法
public void setSelectItem(int selectItem) {
this.selectItem = selectItem;
}
C. 於getView方法中,依照記載的項次變色。
if (position == selectItem) {
convertView.setBackgroundResource(R.drawable.green);
}
else {
convertView.setBackgroundResource(Color.TRANSPARENT);
}
2. 於ListView點擊時利用setSelectItem設定selectItem的值
private ListView.OnItemClickListener lv_itemClick = new ListView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView parent,View v,int id,long arg3)
{
Btnadapter.setSelectItem(id);
Btnadapter.notifyDataSetInvalidated();
}
};
效果(綠色為上次點擊項目,藍色為預設手指目前點擊項目):
Cannot make a static reference to the non-static method notifyDataSetInvalidated() from the type BaseAdapter
回覆刪除QQ
notifyDataSetChanged?
回覆刪除