Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用截击从服务器成功响应后隐藏ProgressBar_Android_Android Volley_Multipart - Fatal编程技术网

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)等参数简单地使用。。