简体   繁体   English

将Download Manager与回收站视图一起使用

[英]Using Download manager with recycler view

Here is my DataAdapter class: 这是我的DataAdapter类:

 package com.example.ashish.fileserver; import android.app.DownloadManager; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.support.v7.widget.CardView; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Switch; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import retrofit2.Callback; /** * Created by ashish on 23/8/16. */ public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> { private ArrayList<AndroidVersions> android; private static String url; private Context context; public DataAdapter(Context context,ArrayList<AndroidVersions> android) { this.android = android; this.context = context; } @Override public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_row, viewGroup, false); return new ViewHolder(view); } @Override public void onBindViewHolder(DataAdapter.ViewHolder viewHolder, int i) { viewHolder.tv_name.setText(android.get(i).getName()); viewHolder.tv_version.setText(android.get(i).getVer()); //viewHolder.tv_api_level.setText(android.get(i).getApi()); } @Override public int getItemCount() { return android.size(); } public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ private TextView tv_name,tv_version,tv_api_level; public CardView card; ArrayList<AndroidVersions> android = new ArrayList<AndroidVersions>(); public ViewHolder(View view) { super(view); this.android = android; tv_name = (TextView)view.findViewById(R.id.tv_name); tv_version = (TextView)view.findViewById(R.id.tv_version); view.setOnClickListener(this); //tv_api_level = (TextView)view.findViewById(R.id.tv_api_level); } @Override public void onClick(View view) { System.out.println(getAdapterPosition()); int position = getAdapterPosition(); if (position == 1){ System.out.println("hey Ashish"); url = "http://vfu.bg/en/e-Learning/Computer-Basics--CTE_I__-_Computer_Basics.ppt"; String servicestring = Context.DOWNLOAD_SERVICE; DownloadManager downloadmanager; downloadmanager = (DownloadManager)getSystemService(servicestring); Uri uri = Uri .parse(url); DownloadManager.Request request = new DownloadManager.Request(uri); long reference = downloadmanager.enqueue(request); Toast.makeText(context.getApplicationContext(), "Your file is now downloading...", Toast.LENGTH_LONG).show(); } } } } 

I want to Download some files at the time when I click on a Cardview but it's showing some error that java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference . 我想在单击Cardview时下载一些文件,但是它显示java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference出现一些错误。 When I click on the card view it says App Stopped Working. 当我单击即时贴视图时,它显示“ App Stopped Working”。 How could I solve thsi problem? 我该如何解决这个问题?

If you check DownloadManager, it says: 如果您检查DownloadManager,它将显示:

Note that the application must have the INTERNET permission to use this class. 请注意,应用程序必须具有INTERNET权限才能使用此类。

Are you good with that? 你这样好吗? Also, this kind operation should be done in a different AsyncTask, so that you can keep your main thread free. 另外,这种操作应在其他AsyncTask中完成,以便您可以使主线程保持空闲状态。

Finally, you will not get any log by using System.out.println . 最后,使用System.out.println将不会获得任何日志。 Use Android Log API instead 改用Android Log API

    String servicestring = Context.DOWNLOAD_SERVICE; 
    downloadmanager  = (DownloadManager)getSystemService(servicestring);

error was in these two lines, I've changed it to: 错误在这两行中,我将其更改为:

   String servicestring = Context.DOWNLOAD_SERVICE;
   downloadmanager  = (DownloadManager)context.getSystemService(servicestring);

And in main activity this line was showing error: 在主要活动中,此行显示错误:

    adapter = new DataAdapter(data);

to: 至:

    adapter = new DataAdapter(data, ScrollingActivity_Test.this);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM