Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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
Java 视图持有者中的按钮和链接越来越复杂_Java_Android_Android Studio_Android Recyclerview - Fatal编程技术网

Java 视图持有者中的按钮和链接越来越复杂

Java 视图持有者中的按钮和链接越来越复杂,java,android,android-studio,android-recyclerview,Java,Android,Android Studio,Android Recyclerview,我正在开发一个应用程序供人们下载笔记。。。 因此,每个Cardview下载和共享按钮中有两个按钮 下载按钮和共享按钮是混合的。。。我是说。。有时,一个视图持有者的数据被另一个视图持有者使用。。有时当我点击下载数据。从所有视图的同一视图下载 这是代码 package com.razorreborn.csebeta; import android.app.DownloadManager; import android.content.BroadcastReceiver; import androi

我正在开发一个应用程序供人们下载笔记。。。 因此,每个Cardview下载和共享按钮中有两个按钮 下载按钮和共享按钮是混合的。。。我是说。。有时,一个视图持有者的数据被另一个视图持有者使用。。有时当我点击下载数据。从所有视图的同一视图下载

这是代码

package com.razorreborn.csebeta;

import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;

import java.io.File;
import java.util.List;
/**
 *
 * Created by Kiran Anto aka RazorSharp on 2/17/2016.
 * For more Info Contact
 * Kirananto@gmail.com
 * 9495333724
 * All Copyrights Reserved 2016
 *
 */
public class subjectCardAdapter extends RecyclerView.Adapter<subjectCardAdapter.ViewHolder> {

    private final Context context;
    private final List<subjectContent> subjectData;
    DownloadManager downloadManager;
    private String downloadFileUrl;
    private long myDownloadReference;
    private String type;

    public subjectCardAdapter(List<subjectContent> subjectData, Context context){
        super();
        //Getting all the notification
        this.subjectData = subjectData;
        this.context = context;
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.list_subject, parent, false);
            return new ViewHolder(v);
    }
    @Override
    public void onBindViewHolder(final ViewHolder holder, int position) {

        final subjectContent subjectContent =  subjectData.get(position);
        holder.Name.setText(subjectContent.getName());
        holder.Description.setText(subjectContent.getDescription());
        holder.Type.setText(subjectContent.getType());
        holder.Uploader.setText(subjectContent.getAuthor());
        holder.Date.setText(subjectContent.getDate());
        holder.Description.setMaxLines(5);
        if(Global.Orientation.equals("Landscape")) {
            holder.Name.setTextSize(20);
            holder.Description.setTextSize(13);
        }
        final String DOWNLOAD_MESSAGE = "Download  " + subjectContent.getName() +" of Subject " + Global.subject + " Notes from Here :  " + downloadFileUrl + "\n And to Download this App : \n\n " + Global.AppShare;
        downloadFileUrl = subjectContent.getDownload_link();
        downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
        type = downloadFileUrl.substring(downloadFileUrl.indexOf("Downloads/") + 10, downloadFileUrl.length()).replace("%20","");
        final String path = context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()+"/"+type;
        Log.i("LOGS : ",path);
        File applicationFile = new File (path);
        if(applicationFile.exists()) {
            holder.download.setText(" Open ");
        }
        holder.download.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Add Content To download here...!!!
                if (holder.download.getText().equals("Download")) {
                    Uri uri = Uri.parse(downloadFileUrl);
                    DownloadManager.Request request = new DownloadManager.Request(uri);
                    request.setTitle(subjectContent.getName());
                            request.setDescription(subjectContent.getDescription());
                    request.setDestinationInExternalFilesDir(context.getApplicationContext(),Environment.DIRECTORY_DOWNLOADS,type);
                    myDownloadReference = downloadManager.enqueue(request);

                    CookieSyncManager.createInstance(context);
                    CookieManager cookieManager = CookieManager.getInstance();
                    cookieManager.removeAllCookie();
                    /*Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // without this there would be crashing coz we dont call from a activity
                context.startActivity(intent);*/
                } else if(holder.download.getText().equals(" Open ")) {
                    File file = new File (path);
                    Intent target = new Intent(Intent.ACTION_VIEW);
                    target.setDataAndNormalize(Uri.fromFile(file));
                    String[] mimetypes = {"application/pdf","text/plain","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.openxmlformats-officedocument.wordprocessingml.document"};
                    target.setType("application/pdf");
                    target.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    target.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
                    Intent intent = Intent.createChooser(target, "Open File");
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    context.startActivity(intent);
                }
                }
        });
        holder.share.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Add Content To download here...!!!
                Intent sharingIntent = new     Intent(android.content.Intent.ACTION_SEND);
                sharingIntent.setType("text/plain");
                sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, DOWNLOAD_MESSAGE);
                sharingIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                Intent sharevia = new Intent(Intent.createChooser(sharingIntent, "Share via"));
                sharevia.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(sharevia);
            }
        });
        holder.cardView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //TODO implement onClick for the card here..!
                holder.Description.setMaxLines(100);
            }
        });
    }

    @Override
    public int getItemCount() {
        return subjectData.size();
    }



    class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

        public final TextView Name;
        public final TextView Description;
        public final TextView Type;
        public final TextView Uploader;
        public final TextView Date;
        public final Button download;
        public final ImageButton share;
        public final CardView cardView= (CardView) itemView.findViewById(R.id.card_view_subject);
        //TODO cardview is taken to use it for onClick Events
        public ViewHolder(View itemView) {
            super(itemView);

            Name = (TextView) itemView.findViewById(R.id.text_name);
            Date = (TextView) itemView.findViewById(R.id.upload_date_blank);
            Uploader = (TextView) itemView.findViewById(R.id.uploader_blank);
            Description = (TextView) itemView.findViewById(R.id.text_description);
            Type = (TextView) itemView.findViewById(R.id.textview_type);
            download = (Button) itemView.findViewById(R.id.button);
            share = (ImageButton) itemView.findViewById(R.id.sharebutton);


             }   
            @Override
            public void onClick(View view) {
            }
        }
    }
package com.razorreborn.csebeta;
导入android.app.DownloadManager;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.net.Uri;
导入android.os.Bundle;
导入android.os.Environment;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.CardView;
导入android.support.v7.widget.RecyclerView;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.webkit.CookieManager;
导入android.webkit.CookieSyncManager;
导入android.widget.Button;
导入android.widget.ImageButton;
导入android.widget.TextView;
导入java.io.File;
导入java.util.List;
/**
*
*由Kiran Anto aka RazorSharp于2016年2月17日创建。
*欲了解更多信息,请联系
* Kirananto@gmail.com
* 9495333724
*版权所有2016
*
*/
公共类subjectCardAdapter扩展了RecyclerView.Adapter{
私人最终语境;
私有最终列表主题数据;
下载管理器下载管理器;
私有字符串下载文件URL;
私人长myDownloadReference;
私有字符串类型;
公共subjectCardAdapter(列出subjectData、上下文){
超级();
//收到所有通知
this.subjectData=subjectData;
this.context=上下文;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext())
.充气(R.layout.list\u主题、父项、假);
返回新的视图持有者(v);
}
@凌驾
公共无效onBindViewHolder(最终ViewHolder,内部位置){
最终主题内容subjectContent=subjectData.get(位置);
holder.Name.setText(subjectContent.getName());
holder.Description.setText(subjectContent.getDescription());
holder.Type.setText(subjectContent.getType());
holder.Uploader.setText(subjectContent.getAuthor());
holder.Date.setText(subjectContent.getDate());
支架。说明。设置最大线(5);
if(全局方向等于(“横向”){
持有者名称设置尺寸(20);
支架.说明.设置尺寸(13);
}
最后一个字符串DOWNLOAD\u MESSAGE=“DOWNLOAD”+subjectContent.getName()+”的主题“+Global.Subject+”注释从此处开始:“+downloadFileUrl+”\n下载此应用:\n\n“+Global.AppShare;
downloadFileUrl=subjectContent.getDownload_link();
downloadManager=(downloadManager)context.getSystemService(context.DOWNLOAD\u服务);
type=downloadFileUrl.substring(downloadFileUrl.indexOf(“Downloads/”)+10,downloadFileUrl.length()).replace(“%20”,”);
最终字符串路径=context.getExternalFilesDir(Environment.DIRECTORY_下载)。getAbsolutePath()+“/”+类型;
Log.i(“日志:”,路径);
文件应用文件=新文件(路径);
if(applicationFile.exists()){
holder.download.setText(“打开”);
}
holder.download.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//在此处添加要下载的内容。。。!!!
if(holder.download.getText().equals(“download”)){
Uri=Uri.parse(下载文件URL);
DownloadManager.Request=新的DownloadManager.Request(uri);
setTitle(subjectContent.getName());
request.setDescription(subjectContent.getDescription());
request.setdestinationnexternalfilesdir(context.getApplicationContext(),Environment.DIRECTORY\u DOWNLOADS,type);
myDownloadReference=downloadManager.enqueue(请求);
createInstance(上下文);
CookieManager CookieManager=CookieManager.getInstance();
cookieManager.removeAllCookie();
/*意图=新意图(Intent.ACTION\u视图,uri);
intent.setFlags(intent.FLAG_ACTIVITY_NEW_TASK);//如果没有这个,就会出现崩溃,因为我们不会从活动调用
背景。开始触觉(意图)*/
}else if(holder.download.getText().equals(“Open”)){
文件=新文件(路径);
意向目标=新意向(意向.行动\视图);
setDataAndNormalize(Uri.fromFile(file));
String[]mimetypes={“application/pdf”、“text/plain”、“application/vnd.openxmlformats officedocument.spreadsheetml.sheet”、“application/vnd.openxmlformats officedocument.wordprocessingml.document”};
target.setType(“application/pdf”);
target.setFlags(Intent.FLAG\u ACTIVITY\u NEW\u TASK);
target.putExtra(Intent.EXTRA\u MIME\u类型、mimetypes);
Intent=Intent.createChooser(目标,“打开文件”);
intent.setFlags(intent.FLAG\u活动\u新任务);
背景。开始触觉(意图);
}
}
});
holder.share.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//在此处添加要下载的内容。。。!!!
意向共享内容=新意向(android.content.Intent.ACTION\u SEND);
sharingcontent.setType(“文本/普通”);
共享内容putExtra(android.con
if(applicationFile.exists()) {
    holder.download.setText(" Open ");
}