2015-08-07 1 views
0

Как создать индикатор выполнения при загрузке файла на сервер в android.I приведен ниже этого кода, пожалуйста, помогите мне ..... При передаче моих данных, чтобы показать прогресс бар .... Пожалуйста решить мои problem..This моего класса загрузки файлов ...Как установить индикатор выполнения при загрузке передачи файла на сервер

public void doFileUpload(File file) { 


       FTPClient client = new FTPClient(); 

       try { 
        client.connect(FTP_HOST,21); 
        Log.e("clientconnect", "" + client); 
        client.login(FTP_USER, FTP_PASS); 
        Log.e("clientlogin", "" + client); 
        client.setType(FTPClient.TYPE_BINARY); 
        Log.e("clienttype", "" + client); 
        client.changeDirectory("/gg1/"); 
        Log.i("", "$$$$$$$$$$$$$$$$$" + ("/gg1/")); 


        client.upload(file,new MyTransferListener()); 
        Log.e("filenameupload", "" + file); 



       } catch (Exception e) { 
        e.printStackTrace(); 
        try { 
         client.disconnect(true); 
        } catch (Exception e2) { 
         e2.printStackTrace(); 
        } 
       } 

      } 

     public class MyTransferListener implements FTPDataTransferListener { 

      public void started() { 

       Toast.makeText(getBaseContext(), " Upload Started ...", 
         Toast.LENGTH_SHORT).show(); 

      } 

      public void transferred(int length) { 


       Toast.makeText(getBaseContext(), " transferred ..." + length, 
         Toast.LENGTH_SHORT).show(); 

      } 

      public void completed() { 


       Toast.makeText(getBaseContext(), " completed ...", 
         Toast.LENGTH_SHORT).show(); 


      } 

      public void aborted() { 


       Toast.makeText(getBaseContext(), 
         " transfer aborted , please try again...", 
         Toast.LENGTH_SHORT).show(); 

      } 

      public void failed() { 


       System.out.println(" failed ..."); 
      } 

     } 

ответ

1

Вы в основном должны расширить asynctask для ведения деятельности, которая использует интернет

Вашего класса загрузку обычно будет подобные

private class UploadFileToServer extends AsyncTask<String, Integer, String> { 
    @Override 
    protected void onPreExecute() { 
     // setting progress bar to zero 
     progressBar.setProgress(0); 
     super.onPreExecute(); 
    } 

    @Override 
    protected void onProgressUpdate(Integer... progress) { 

     progressBar.setVisibility(View.VISIBLE); 
     progressBar.setProgress(progress[0]); 
     txtPercentage.setText(String.valueOf(progress[0]) + "%"); 

     btnUpload.setVisibility(View.GONE); 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     return uploadFile(params[0]); 
    } 

    private String uploadFile(String name) { 

     try { 
     // FTP Upload code 

    } 

     } catch (IOException e) { 

    } 
     return responseString; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
    } 
} 

Вы называете экземпляр класса в главном потоке

new UploadFileToServer().execute("filepath/filename"); 

файл макета будет что-то вроде

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/view_background" 
    android:orientation="vertical" 
    android:padding="10dp" > 
     <TextView 
     android:id="@+id/txtPercentage" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginBottom="15dp" 
     android:layout_marginTop="15dp" 
     android:textColor="@color/txt_font" 
     android:textSize="30dp" /> 

    <ProgressBar 
     android:id="@+id/progressBar" 
     style="?android:attr/progressBarStyleHorizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="20dp" 
     android:layout_marginBottom="35dp" 
     android:visibility="gone"/> 

    <Button 
     android:id="@+id/btnUpload" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:background="@color/btn_bg" 
     android:paddingLeft="20dp" 
     android:paddingRight="20dp" 
     android:text="Confirm" 
     android:textColor="@color/white" 
     android:layout_marginBottom="20dp"/> 

</LinearLayout> 

НТН.