Я не могу получить PDF-файл из firebase в Android studio

# #android #firebase #pdf

Вопрос:

В настоящее время я ищу учебник по этому видео https://youtu.be/2jd_Ao5Ez7A для обучения извлечению PDF-файла из firebase в режиме recycler view. Теперь я успешно выполнил загрузку и отображение PDF-файла из firebase, и теперь я хочу выполнить функцию удаления, обратившись к кодировке и логике из этого видео, но мне не удалось получить нужный путь к файлу.

Мой PDF-файл хранится в базе данных и хранилище реального времени.

Это мой файл данных

 package com.example.pdfapp.ebrochure;

public class EbrochureData {
    private String pdfTitle,pdfUrl;

    public EbrochureData() {
    }

    public EbrochureData(String pdfTitle, String pdfUrl) {
        this.pdfTitle = pdfTitle;
        this.pdfUrl = pdfUrl;
    }

    public String getPdfTitle() {
        return pdfTitle;
    }

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

    public String getPdfUrl() {
        return pdfUrl;
    }

    public void setPdfUrl(String pdfUrl) {
        this.pdfUrl = pdfUrl;
    }
}
 

Это мой java-файл адаптера

Функция удаления — это то, что я пишу сам, и я не уверен, правильно это или нет

 package com.example.pdfapp.ebrochure;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.example.pdfapp.R;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;


import java.util.List;

public class UserEbrochureAdapter extends RecyclerView.Adapter<UserEbrochureAdapter.UserEbrochureViewHolder>{

    private Context context;
    private List<EbrochureData> list;
    private StorageReference storageReference;



    public UserEbrochureAdapter(Context context, List<EbrochureData> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public UserEbrochureViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.ebrochure_item_layout_user, parent,false);
        return new UserEbrochureViewHolder(view);
    }


    @Override
    public void onBindViewHolder(@NonNull UserEbrochureViewHolder holder, int position) {

        holder.ebrochureName.setText(list.get(holder.getAdapterPosition()).getPdfTitle());

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(context, PdfViewerActivity.class);
                intent.putExtra("pdfUrl",list.get(holder.getAdapterPosition()).getPdfUrl());
                context.startActivity(intent);
            }
        });

**this is my delete function**

        holder.ebrochureDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                storageReference = FirebaseStorage.getInstance().getReference();
                StorageReference reference = storageReference.child("pdf/"  list.get(holder.getAdapterPosition()).getPdfUrl() "-"  System.currentTimeMillis() ".pdf");
                reference.delete().addOnSuccessListener(new OnSuccessListener<Void>() {
                    @Override
                    public void onSuccess(Void unused) {
                        Toast.makeText(context, "Successful deleted", Toast.LENGTH_SHORT).show();
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(context, "Failed to delete", Toast.LENGTH_SHORT).show();
                    }
                });

            }
        });




    }

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

    public class UserEbrochureViewHolder extends RecyclerView.ViewHolder {

        private TextView ebrochureName;
        private Button ebrochureDelete;


        public UserEbrochureViewHolder(@NonNull View itemView) {
            super(itemView);

            ebrochureName = itemView.findViewById(R.id.ebrochureName);
            ebrochureDelete = itemView.findViewById(R.id.ebrochureDelete);


        }
    }
}
 

Это java-файл списка pdf

 package com.example.pdfapp.ebrochure;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.example.pdfapp.R;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;

import java.util.ArrayList;
import java.util.List;

public class UserEbrochureActivity extends AppCompatActivity {

    private RecyclerView ebrochureRecycler;
    private DatabaseReference reference;
    private List<EbrochureData> list;
    private UserEbrochureAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_ebrochure);

        ebrochureRecycler = findViewById(R.id.ebrochureRecycleruser);
        reference = FirebaseDatabase.getInstance().getReference().child("pdf");

        getData();
    }

    private void getData() {
        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                list = new ArrayList<>();
                for(DataSnapshot snapshot : dataSnapshot.getChildren()){
                    EbrochureData data = snapshot.getValue(EbrochureData.class);
                    list.add(data);

                }
                adapter = new UserEbrochureAdapter(UserEbrochureActivity.this, list);
                ebrochureRecycler.setLayoutManager(new LinearLayoutManager(UserEbrochureActivity.this));
                ebrochureRecycler.setAdapter(adapter);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

                Toast.makeText(UserEbrochureActivity.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });
    }

}
 

Я новичок в Android Studio, поэтому получил кое-что, чего я не понимаю.
Я не уверен, нужно ли мне записывать функцию удаления в java-файле списка pdf или в моем адаптере, и я также не знаю, как получить путь к файлу PDF, который я хотел удалить.
Пожалуйста, помогите мне
Я был бы признателен, если кто-нибудь сможет мне помочь

Комментарии:

1. Если вы понимаете Kotlin, вот несколько полезных статей, которые могут помочь. Как удалить запись из Firestore с помощью прокрутки влево / вправо RecylerView и как удалить несколько записей из Firestore с помощью множественного выбора RecyclerView .