It looks like your problem is in how you define fileDownloader:
// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(activity, "List Item Clicked", Toast.LENGTH_LONG) .show();
fileDownloader.executeOnExecutor( AsyncTask.THREAD_POOL_EXECUTOR, Utility.KEY_DOWNLOAD_PATH);
You appear to be defining the fileDownoader outside of the onclick event. So you actually only have one AsyncTask, and when execute fileDownloader.executeOnExecuter you are overwriting and previous AsyncTask assigned to that object.
You may want to change your FileDownloader class so that it contains some list of single AsyncTasks ( List ) instead, although that is not the only way to implement what you are looking for.