Android 使用截击从服务器成功响应后隐藏ProgressBar
我正试图通过Android 使用截击从服务器成功响应后隐藏ProgressBar,android,android-volley,multipart,Android,Android Volley,Multipart,我正试图通过API将多个视频上传到服务器,这与WhatsApp类似 视频已成功上载 从我的适配器上传时,我正在设置一个进度条。 但是,在服务器成功响应我的文件已上载之前,progressBar会消失。 我希望progressBar在收到成功的Toast消息之前和之前都可见 下面是我上传视频媒体时使用的上传方法: private void uploadVideo(List<String> videoPathList) { VideoUrl mVideoUrl =
API
将多个视频
上传到服务器,这与WhatsApp类似
视频已成功上载
从我的适配器上传时,我正在设置一个进度条。
但是,在服务器成功响应我的文件已上载之前,progressBar
会消失。
我希望progressBar
在收到成功的Toast
消息之前和之前都可见
下面是我上传视频媒体时使用的上传方法:
private void uploadVideo(List<String> videoPathList) {
VideoUrl mVideoUrl = null;
String reqId = String.valueOf(dbHelper.getRequestId());
String userId = String.valueOf(dbHelper.getUserId());
for (int j = 0; j < videoPathList.size(); j++) {
String fullUrl = videoPathList.get(j);
int fullLength = fullUrl.length();
int lastIndex = fullUrl.lastIndexOf("/");
mVideoUrl = new VideoUrl();
mVideoUrl.setVideoUrl("/Uploads" + fullUrl.substring(lastIndex, fullLength));
// mVideoUrl.setVideoUrl(videoPathList.get(j));
//VideoUrl videoUrl = new VideoUrl("/Uploads/feedback_09132018023251PM.mp4");
videoUrlList.add(mVideoUrl);
}
mVideoAdapter.notifyDataSetChanged();
for (int i = 0; i < videoPathList.size(); i++) {
vidPath = videoPathList.get(i);
Log.d("Log", "filePath: " + vidPath);
SimpleMultiPartRequest smpr = new SimpleMultiPartRequest(Request.Method.POST, videoUploadUrl,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i++) {
String url = jsonArray.getJSONObject(i).getString("Url");
Log.d("Log", "response video: " + response);
Toast.makeText(getActivity(), url, Toast.LENGTH_SHORT).show();
}
mVideoAdapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Log", "video response error: " + error);
Toast.makeText(getActivity(), "Uploading error", Toast.LENGTH_SHORT).show();
}
});
smpr.addStringParam("Userid", userId);
smpr.addStringParam("RequestId", String.valueOf(2));
smpr.addStringParam("ContentType", "2");
smpr.addFile("File", vidPath);
Log.d("Log", "filePath smpr: " + vidPath);
RequestQueue mRequestQue = Volley.newRequestQueue(getActivity());
mRequestQue.getCache().invalidate(videoUploadUrl, true);
mRequestQue.add(smpr);
}
}
下面是该过程的示例屏幕截图。进度条会显示出来,但在我从服务器得到完整响应之前就消失了
最好在uploadVideo()中使用进度条
内部onResponse()方法
Log.d("Log", "response video: " + response);
Toast.makeText(getActivity(), url, Toast.LENGTH_SHORT).show();
pBar.setVisibility(View.GONE);
Log.d("Log", "video response error: " + error);
Toast.makeText(getActivity(), "Uploading error", Toast.LENGTH_SHORT).show();
pBar.setVisibility(View.GONE);
内部错误()方法
Log.d("Log", "response video: " + response);
Toast.makeText(getActivity(), url, Toast.LENGTH_SHORT).show();
pBar.setVisibility(View.GONE);
Log.d("Log", "video response error: " + error);
Toast.makeText(getActivity(), "Uploading error", Toast.LENGTH_SHORT).show();
pBar.setVisibility(View.GONE);
为此,您需要初始化进度条并通过参数传递
最好的..我的progressBar位于Adapter类的onBindViewHolder中。如何通过片段访问它。您调用uploadvideo方法的确切位置?我在片段中调用uploadvideo方法,然后通过uploadvideo(列表videoPathList,Progressbar mbar)等参数简单地使用。。