2016-03-08 5 views
0

Я - совершенно новый разработчик. Я создаю приложение с AndroidStudio, которое читает XML-файл с сервера с помощью PullParser. Мне нужно загрузить file.zip из ссылки xml, и когда я нажимаю кнопкуDownload (внутри raw Layout listView), он должен начать загрузку файла. Вот код моей схемы строк моего SiteAdapter.Скачать файл с XMLPullParser

public View getView(final int pos, final View convertView, final ViewGroup parent){ 
    RelativeLayout row = (RelativeLayout)convertView; 
    Log.i("AtlantisSites", "getView pos = " + pos); 
    //ViewHolder mainViewHolder = null; 
    ViewHolder viewHolder; 
    if(null == row){ 
//No recycled View, we have to inflate one. 
     LayoutInflater inflater =(LayoutInflater)parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     row = (RelativeLayout)inflater.inflate(R.layout.row_site, null); 

     viewHolder = new ViewHolder(); 
     viewHolder.btnDownload = (Button) row.findViewById(R.id.btnDownload); 
     viewHolder.btnDownload.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Integer pos=(Integer)v.getTag(); 
       Log.i("AtlantisSites", "getView pos = " + pos); 
       String url = getItem(pos).getLink(); 
       Intent i = new Intent(Intent.ACTION_VIEW); 
       i.setData(Uri.parse(url)); 
      } 
     }); 
row.setTag(viewHolder); 
    } else{ 
     viewHolder = (ViewHolder) row.getTag(); 
    } 
viewHolder.btnDetails.setTag(getItem(pos)); 

public class ViewHolder{ 
    Button btnDownload; 
    Button btnDetails; 
} 

и здесь есть класс, где я должен вызвать getLink(), чтобы начать загрузку file.zip

public class DownloadZip { 



public void DownloadFromUrlZip(){ 
    try { 


     URL url = new URL (s); 

     HttpURLConnection c = (HttpURLConnection)url.openConnection(); 
     c.setRequestMethod("GET"); 
     c.setDoOutput(true); 
     c.connect(); 

     String Path = Environment.getExternalStorageDirectory() + "/download/"; 
     Log.v("AtlantisSites", "PATH: " + Path); 
     File file = new File(Path); 
     file.mkdirs(); 
     FileOutputStream fos = new FileOutputStream("AtlantisIssue.zip"); 

     InputStream is = c.getInputStream(); 

     byte[] buffer = new byte[1024]; 
     int len1 = 0; 
     while ((len1 = is.read(buffer)) != -1) { 
      fos.write(buffer, 0, len1); 
     } 
     fos.close(); 
     is.close(); 
    } catch (IOException e) { 
     Log.d("AtlantisSites", "Error: " + e); 
    } 
    Log.v("AtlantisSites", "Check: "); 

} 

После загрузки я должен распаковать файл и сохранить его во внутренней памяти. Дело в том, что я не знаю, как вызвать getLink(), чтобы начать загрузку с него. Я пробовал много раз и много. Я застрял на нем.

Пожалуйста, любая помощь будет действительно оценена.

ответ

0
Intent i = new Intent(v.getContext(), DownloadZip.class); 
v.getContext().startActivity(i); 

Я написал это внутри своей кнопки в ViewHolder. и создать метод Download.class