註:使用別種方法,有可能在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(); 
    }
};
效果(綠色為上次點擊項目,藍色為預設手指目前點擊項目):
 
 
2 則留言:
Cannot make a static reference to the non-static method notifyDataSetInvalidated() from the type BaseAdapter
QQ
notifyDataSetChanged?
張貼留言