Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android CheckedTextVIew全部清除/全选_Android_Listview_Checkedtextview - Fatal编程技术网

Android CheckedTextVIew全部清除/全选

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

我有一个使用CheckedTextView的ListView和一个clear all按钮,该按钮具有以下代码:

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); 
}