In the else
clause of your "if(videoExists(videoId))
" you need to set the default "download" button image and color filter.
This is because the items are reused when you scroll the list, so the buttons with the new settings will be reused with those new settings for other items that are not currently playing.
Example:
if (videoExists(videoId)) {
downloadButton.setBackgroundResource( R.drawable.ic_play );
Drawable d = downloadButton.getBackground();
d.setColorFilter(Color.parseColor("#00AA00"), Mode.SRC_ATOP);
...
} else {
downloadButton.setBackgroundResource( R.drawable.ic_download );
Drawable d = downloadButton.getBackground();
d.setColorFilter(Color.parseColor("<download-color>"), Mode.SRC_ATOP);
...
}