点击按钮时如何投射方法?

时间:2019-07-10 14:10:34

标签: javascript android google-cloud-firestore

我有以下代码可以从firestore列表中下载和删除文件(实际上,它删除了firestore文档中的数据,而不是存储中的真实文件)

  1. 我以正确的方式调用了存储在上传会话中的文件的名称吗?

  2. 为什么不能将方法delete强制转换为我创建的按钮

请找到代码:-

//my adapater has the delete and download methods //


@Override
public void onBindViewHolder(@NonNull final MyViewHolder myViewHolder, final int i) {

  myViewHolder.mName.setText(downModels.get(i).getName());
  myViewHolder.mLink.setText(downModels.get(i).getLink());
  myViewHolder.deletePdfBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
      deletepdf(final int i); //here i got an error says Unexpected token//
    }
  });

  myViewHolder.mDownload.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
      downloadFile(myViewHolder.mName.getContext(), downModels.get(i).getName(), ".pdf", DIRECTORY_DOWNLOADS, downModels.get(i).getLink());
    }
  });


}

private void deletepdf(final int i) {
  FirebaseFirestore db = FirebaseFirestore.getInstance();
  String filenamed = downModels.get(i).get_name(); // am i  calling the write parameter (i want to call the file name as i uploaded the document name just same to it from text view in the upload page //
  DocumentReference documentReference = db.collection("files").document(filenamed);
  Map < String, Object > Updates = new HashMap < > ();
  Updates.put("link", FieldValue.delete());
  documentReference.update(Updates)
    .addOnSuccessListener(new OnSuccessListener < Void > () {
      @Override
      public void onSuccess(Void aVoid) {
        Log.d(TAG, "DocumentSnapshot successfully written!");
      }
    })
    .addOnFailureListener(new OnFailureListener() {

      @Override
      public void onFailure(@NonNull Exception e) {
        Log.w(TAG, "Error writing document", e);
      }
    });



}
public void downloadFile(Context context, String fileName, String fileExtension, String destinationDirectory, String url) {

  DownloadManager downloadmanager = (DownloadManager) context.
  getSystemService(Context.DOWNLOAD_SERVICE);
  Uri uri = Uri.parse(url);
  DownloadManager.Request request = new DownloadManager.Request(uri);

  request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
  request.setDestinationInExternalFilesDir(context, destinationDirectory, fileName + fileExtension);

  downloadmanager.enqueue(request);
}

//这是我的上传活动//

package com.example.boc.Pdf;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.example.boc.ImageView.MyPdfAdapter;
import com.example.boc.R;
import com.example.boc.main.MainActivity;
import com.example.boc.models.DownModel;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.SetOptions;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;

import java.util.HashMap;

import java.util.Map;
import java.util.Objects;
import java.util.UUID;


public class pdfUploader extends AppCompatActivity {
  private StorageReference mStorageRef;
  private FirebaseFirestore db;
  private static final String NAME_KEY = "name";




  Button upload;
  String stringame;
  EditText putfilenameTxt;
  Button select;
  int CODE = 215;
  private Context context = null;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    db = FirebaseFirestore.getInstance();

    setContentView(R.layout.activity_pdf_uploader);


    mStorageRef = FirebaseStorage.getInstance().getReference("pdf");


    upload = findViewById(R.id.upload);
    putfilenameTxt = findViewById(R.id.putfilenameTxt);
    context = this;
    select = findViewById(R.id.choose);


    select.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        selectFile();
      }
    });

  }




  public void selectFile() {

    Intent i = new Intent(Intent.ACTION_GET_CONTENT);
    i.setType("*/*");
    startActivityForResult(Intent.createChooser(i, "Select a file"), CODE);
  }

  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    String filePath = data.getDataString();
    Uri SelectedFileLocation = Uri.parse(filePath);
    UploadFile(SelectedFileLocation);

    super.onActivityResult(requestCode, resultCode, data);

  }

  private static final String TAG = "MainActivity";








  public void UploadFile(final Uri file) {
    final String nameoffile = putfilenameTxt.getText().toString();


    Toast.makeText(this, "Please wait.. the file is uploading!", Toast.LENGTH_SHORT).show();
    //Uri file = Uri.fromFile(new File("path/to/images/rivers.jpg"));
    final StorageReference riversRef = mStorageRef.child(System.currentTimeMillis() + ".");


    riversRef.putFile(file).addOnSuccessListener(new OnSuccessListener < UploadTask.TaskSnapshot > () {
      @Override
      public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        riversRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener < Uri > () {
          @Override
          public void onSuccess(Uri uri) {
            Uri downloadUrl = uri;

            Toast.makeText(pdfUploader.this, "Upload Done", Toast.LENGTH_LONG).show();
            //After upload Complete we have to store the Data to firestore.
            Map < String, Object > file = new HashMap < > ();
            file.put(NAME_KEY, nameoffile);
            file.put("link", downloadUrl.toString()); // We are using it as String because our data type in Firestore will be String
            db.collection("files").document(nameoffile)
              .set(file, SetOptions.merge())
              .addOnSuccessListener(new OnSuccessListener < Void > () {
                @Override
                public void onSuccess(Void aVoid) {
                  Log.d(TAG, "DocumentSnapshot successfully written!");
                }
              })
              .addOnFailureListener(new OnFailureListener() {

                @Override
                public void onFailure(@NonNull Exception e) {
                  Log.w(TAG, "Error writing document", e);
                }
              });
          }
        });
      }
    });
  }
}

//下载模型//

package com.example.boc.models;

public class DownModel {

    String Name,Link;
    private String name,link;

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        this.Name = name;
    }

    public String getLink() {
        return Link;
    }

    public void setLink(String link) { this.Link = link; }


    public String get_name() {
        return name;
    }


    public DownModel(String Name, String Link){
        this.Link=Link;
        this.Name=Name;
        this.name = name;


    }

}

firebase结构 enter image description here

存储

enter image description here

0 个答案:

没有答案