2016-03-08 68 views
0

我是一个相当新的开发人员。 我正在构建一个AndroidStudio应用程序,该应用程序使用PullParser从服务器读取XML文件。我需要从xml链接下载一个file.zip,当我按下buttonDownload(在listView的原始布局内)时,它应该开始下载文件。 以下是我的SitesAdapter的行布局代码。从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()开始从它下载。 我尝试了很多次和方法。 我被卡住了。

请,任何帮助将真正apreciate。

回答

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

我在ViewHolder中的按钮中写了这个。并创建一个方法Download.class