# #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 .