Android CheckedTextVIew全部清除/全选
我有一个使用CheckedTextView的ListView和一个clear all按钮,该按钮具有以下代码:Android CheckedTextVIew全部清除/全选,android,listview,checkedtextview,Android,Listview,Checkedtextview,我有一个使用CheckedTextView的ListView和一个clear all按钮,该按钮具有以下代码: btnClearAll.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { int listsize = songsList.size(); filelv = (ListView)getView().findViewB
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值都被设置为未正确检查,因此我知道按钮正在工作。但是,CheckedTextView项没有取消勾选
我哪里出错了?解决方案:
如上所述,我只是设置了一个全局变量,并向其传递了是选择全部还是清除全部。然后我调用了我的函数来填充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
如果使用自定义适配器,则setItemChecked将不起作用,您必须在适配器级别更改CheckedTextView的状态。有时解决方案非常明显。。。。如果我只向构建listview的函数传递一个变量,在它调用适配器之前,我可以轻松地选择/清除所有。如果你找到了解决方案,发布一个答案并接受它,这样问题就会得到回答。嗨,这是我的意图,还没有测试,所以稍后会发布。你能分享适配器的代码吗。我正试图用listview顶部的复选框做同样的事情。如果选中和取消选中,则应选中或取消选中所有选中的文本视图
if (songsList.get(position).get("songCheckedStatus").equals("Checked")){
holder.checkTextView.setChecked(true);
}else{
holder.checkTextView.setChecked(false);
}