1. 程式人生 > >ListView的點選變色

ListView的點選變色

   我做了一個音樂播放器,其中用ListView顯示歌曲列表,當我點選某一首歌時,希望這首歌所在的item的背景顏色改變,以突出顯示所選擇的歌曲。

   首先我想到的是在ItemClickListener裡面寫,如下:

        private View formerView=null;
        private class ListViewClickListener implements OnItemClickListener{
		@Override
		public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
			if(formerView!=null){
			    formerView.setBackgroundColor(formerView.getResources().getColor(R.color.background_white));
			}
			arg1.setBackgroundColor(arg1.getResources().getColor(R.color.item_blue));
			formerView=arg1;
		}
	}
當選中一個item,就改變顏色,接著又選中一個item的時候,將前一個item還原為之前的顏色。但是我發現一個問題,就是當我選中一個item的時候,不止這一個item的顏色會改變,往下滑動發現後面還有幾個item的顏色也被改變了。是不是onItemClick方法裡面的View arg1這個引數是隨著螢幕上顯示的內容改變而變化的呢?我不敢亂說,但這個辦法是行不通的。

    後來發現原來有一個非常簡單的辦法,Android早已想到了我們會需要這個功能,直接提供了一個方法實現這個功能。

  localMusicListView.setSelector(R.color.item_blue);
   直接給ListView新增這樣一個方法即可。完美實現這個功能。