1

CheckedTextViewを利用するListView、次のコードを持つすべてをクリアするボタンがあります。

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アイテムは「チェック解除」されていません。

どこが間違っているのですか?

4

1 に答える 1

0

解決策:

上記のように、グローバル変数を設定し、[すべて選択]または[すべてクリア]のどちらを選択するかを渡しました。次に、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

そして最後に、cursoradaptergetviewのこのセクション

if (songsList.get(position).get("songCheckedStatus").equals("Checked")){
holder.checkTextView.setChecked(true);
}else{
 holder.checkTextView.setChecked(false); 
}
于 2012-09-11T20:33:06.897 に答える