2012-09-10 62 views
1

我有一個的ListView利用一個CheckedTextView和清除所有按鈕具有下面的代碼:的Android CheckedTextVIew全部清除/全選

btnClearAll.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      int listsize = songsList.size(); 
      filelv = (ListView)getView().findViewById(R.id.FileList); 
      checkedCount = 0; 
      for (int i=0; i<listsize-1; i++) { 
       // if(currentPlayList.get(i).equals ("Checked")){ 
       songsList.get(i).get("songCheckedStatus").equals("Not Checked"); 

       filelv.setItemChecked(i, false); 
      } 

     }  
    }); 

當代碼執行,每個陣列「songsList 「值設置爲」Not Checked「正確,所以我知道該按鈕正在工作。但是,CheckedTextView項目不是「解除」。

我哪裏錯了?

+1

如果您使用自定義適配器,那麼'setItemChecked'將無法正常工作,你就必須改變'CheckedTextView'的狀態在適配器級別。 – Luksprog

+1

有時解決方案非常明顯....如果我只是將一個變量傳遞給構建listview的函數,在調用適配器之前,我可以輕鬆地選擇/清除所有變量。感謝您向正確的方向推動 –

+0

如果您找到解決方案,請發佈答案並接受答案,以便問題得到解答。 – Luksprog

回答

0

olution:

正如上面提到的,我只是成立了一個全局變量,並通過我是否願意選擇或者清除它。然後我只是調用我的函數來填充ListView。在構建ListView時,它會通過一個簡單的「if」語句來檢查變量,並添加是否檢查或取消選中。遊標適配器隨後在重新運行時執行檢查/取消選中。

//The code for clearing all. 
btnClearAll.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      checkedCount = 0; 

      GetMusicMode = "ClearAll"; 
      GetMusic getMusic = new GetMusic(); 
      getMusic.execute(); 
     }  
    }); 

而這從我的數據採集器的ListView。

.... 
String track_Title = null; 
String track_Path = null; 
String track_Artist = null; 
String track_Album = null; 
String track_ID = null; 
String track_TrackNumber = null; 
String track_AlbumID = null; 
String track_ArtistID = null; 
String track_Checked = null; 

if (Constants.GetMusicMode.equals("SelectAll")){ 
track_Checked = "Checked"; 
}else{ 
track_Checked = "Not Checked"; 
} 
..... 

..... 

HashMap<String, String> song = new HashMap<String, String>(); 
song.put("songTitle", track_Title); 
song.put("songPath", track_Path); 
song.put("songArtist", track_Artist); 
song.put("songAlbum", track_Album); 
song.put("songTrackNumber", track_TrackNumber); 
song.put("songID", track_ID); 
song.put("songAlbumID", track_AlbumID); 
song.put("songArtistID", track_ArtistID); 
song.put("songCheckedStatus", track_Checked); 


// Adding each song to SongList 
songsList.add(song); 

    ....throw to cursor adapter 

最後,從CursorAdapter的getview本節

if (songsList.get(position).get("songCheckedStatus").equals("Checked")){ 
holder.checkTextView.setChecked(true); 
}else{ 
holder.checkTextView.setChecked(false); 
} 
+0

你能分享適配器的代碼。我正在嘗試使用listview頂部的複選框來做同樣的事情。檢查它並取消選中它應該檢查或取消選中所有checkedtextview –