Java 视图持有者中的按钮和链接越来越复杂
我正在开发一个应用程序供人们下载笔记。。。 因此,每个Cardview下载和共享按钮中有两个按钮 下载按钮和共享按钮是混合的。。。我是说。。有时,一个视图持有者的数据被另一个视图持有者使用。。有时当我点击下载数据。从所有视图的同一视图下载 这是代码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
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 ");
}