URLを含むListViewがあります。ユーザーがURLの1つをクリックすると、ビデオがダウンロードされます。私はスレッド内で呼び出されるTask内でビデオダウンロード機能を呼び出す。ユーザーが複数の動画URLをクリックすると、動画がダウンロードされます。ビデオごとに個別のタスクが作成されます。私が知りたいことは、各ビデオのタスクを一意に識別する方法です。タスクを含むjavafxの各タスクを一意に識別する方法は?
public void videoFileDownload(){
try {
videoDownloadUrl = lblURL.getText().toString();
IndexOfThisNode = hbox.getId();
String path = "XXXX";
downloadThisVideo = new VGet(new URL(videoDownloadUrl),new File(path));
downloadThisVideo.download();
System.out.println("Download this video: " + videoDownloadUrl + downloadThisVideo.getVideo().getState());
System.out.println("Download complete");
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("Retrying...");
}
}
機能:
public void showDetailsButton(){
btnSMDetails.addEventHandler(MouseEvent.MOUSE_CLICKED, (e)->{
System.out.println("\n" + "The index is: " + getIndex() + "\n");
showLoader();
//Task created to download videos in background without blocking UI
Task downloadVideoTask = new Task<Void>() {
@Override
public Void call() {
//SIMULATE A FILE DOWNLOAD
videoFileDownload();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
};
new Thread(downloadVideoTask).start();
downloadVideoTask.setOnSucceeded(taskFinishEvent ->{showLoader(); /*isButtonClicked="0";*/});
});
}
質問が多すぎます - タスクを特定することはどういう意味ですか?おそらく、それぞれの「タスク」はそれがダウンロードするビデオのURLを持っていなければならず、それだけで十分かもしれません。もう1つの方法は、作成時にIDを割り当てるか、単に参照平等を使用する方法です。あなたは何を達成しようとしていますか? – Itai
@sillyflyビデオのダウンロード中は、リストセルが無効になり、進行状況バーが表示されます。しかし、スクロールしてそのセルに戻っても、もはや無効にはならず、進行状況バーは表示されません。だから、私はダウンロードボタンが押されているセルを更新しないようにリストセルに伝えたい。友人は、タスクを使用してこれを達成し、タスクを保存すると教えてくれました –
解決しようとしている実際の問題を示す[MCVE]を作成します。 –