如何解决从手机中获取 pdf 并在 Android Studio 中以列表视图的形式显示它?
我想从手机创建一个 pdf 阅读器,但我遇到了一个问题,即使我的手机中有 pdf 文件,它也不会在列表视图中显示任何 pdf 文件。 我知道问题出在我的主要活动中,但我不知道如何解决。请任何人帮助我。
我的主要 Activity.java
void autopreloadMoreArticles(ScrollNotification notification) {
if (notification is ScrollUpdateNotification) {
ScrollMetrics metrics = notification.metrics;
double buttondistance = metrics.extentAfter;
if (buttondistance < 800 && !isdispatched) {
isdispatched = true;
_loadingMoreArticle();
}
if (buttondistance > 800) {
isdispatched = false;
}
}
}
CustomAdapter.java 类
package com.example.pdfreader;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.pdf.PdfDocument;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.io.File;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
FloatingActionButton floatingActionButton ;
File directroy;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
floatingActionButton = findViewById(R.id.floating_button);
directroy = Environment.getExternalStorageDirectory();
final ListView listView = findViewById(R.id.list_view);
floatingActionButton.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CustomAdapter customAdapter = new CustomAdapter(MainActivity.this,getPDFs(directroy));
listView.setAdapter(customAdapter);
}
});
}
private boolean hasPermission(Context context,String readExternalStorage)
{
return ContextCompat.checkSelfPermission(context,readExternalStorage)== PackageManager.PERMISSION_GRANTED;
}
private ArrayList<PDFDocument>getPDFs(File dir)
{
ArrayList<PDFDocument> pdfDocuments = new ArrayList<>();
if(dir.exists())
{
File[] files = dir.listFiles();
if (files != null) {
for(int i = 0; i<files.length; i++)
{
if(files[i].isDirectory())
{
getPDFs(files[i]);
}
else
{
if (files[i].getName().endsWith(".pdf"))
{
Toast.makeText(this,"Cursor reached here",Toast.LENGTH_SHORT).show();
PDFDocument pdfDoc = new PDFDocument();
pdfDoc.setName(files[i].getName());
pdfDoc.setPath(files[i].getAbsolutePath());
pdfDocuments.add(pdfDoc);
}
}
}
}
else
{
Toast.makeText(this,"Directory is empty..",Toast.LENGTH_SHORT).show();
}
}
return pdfDocuments;
}
}
PDFDocument.java
package com.example.pdfreader;
import android.content.Context;
import android.content.Intent;
import android.os.Environment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.io.File;
import java.util.ArrayList;
public class CustomAdapter extends BaseAdapter {
Context context;
ArrayList<PDFDocument> pdfDocuments;
public CustomAdapter(Context context,ArrayList<PDFDocument> pdfDocuments) {
this.context = context;
this.pdfDocuments = pdfDocuments;
}
@Override
public int getCount() {
return pdfDocuments.size();
}
@Override
public Object getItem(int i) {
return pdfDocuments.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i,View view,ViewGroup viewGroup) {
if(view == null)
{
view = LayoutInflater.from(context).inflate(R.layout.activity_my_list_data,viewGroup,false);
}
final PDFDocument pdfDocument = (PDFDocument) this.getItem(i);
TextView nameTextView = view.findViewById(R.id.text_view);
ImageView image = view.findViewById(R.id.imageIcon);
// Binding of Data is going to start
nameTextView.setText(pdfDocument.getName());
image.setimageResource(R.drawable.pakistan);
return view;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。