在android studio中使用上一个和下一个按钮打开不同的pdf文件?

Posted

技术标签:

【中文标题】在android studio中使用上一个和下一个按钮打开不同的pdf文件?【英文标题】:Opening different pdf file with previous and next button in android studio? 【发布时间】:2021-08-18 04:19:45 【问题描述】:

我正在尝试制作一个带有可扩展列表视图和自定义适配器的 pdf 图书应用程序。我在不同主题的资产中有许多不同的 pdf 文件。我已经在 pdf 视图中制作了上一个和下一个按钮布局,我希望这些按钮可以打开上一个和下一个 pdf 文件。我是一个新的学习者,所以请帮助我。 这是它的外观:

全视图活动-

String fileName;
Intent intent;
PDFView pdfView;
Button nbutton,pbutton;
int position;

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

    pdfView=(PDFView)findViewById(R.id.pdfView);
    pbutton=findViewById(R.id.pbutton);
    nbutton=findViewById(R.id.nbutton);
    intent=getIntent();
    
    fileName=intent.getStringExtra("fileName");
    pdfView.fromAsset(fileName+".pdf").load();
    
        
    );

主要活动 -

ExpandableListView expandableListView;
CustomAdapter customAdapter;


List<Cover>coverList;
List<Topics>topicsList;


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

    expandableListView=(ExpandableListView)findViewById(R.id.expandableListView);

    addData();



void addData()


    coverList=new ArrayList<>();

    topicsList=new ArrayList<>();
    topicsList.add(new Topics("1.","pdf1"));
    topicsList.add(new Topics("2.","pdf2"));
    topicsList.add(new Topics("3.","pdf3"));
    topicsList.add(new Topics("4.","pdf4"));
    coverList.add(new Cover("Cover 1",topicsList));

   
    topicsList=new ArrayList<>();
    topicsList.add(new Topics("1.","pdf5"));
    topicsList.add(new Topics("2.","pdf6"));
    topicsList.add(new Topics("3.","pdf7"));
    topicsList.add(new Topics("4.","pdf8"));
    topicsList.add(new Topics("5.","pdf9"));
    topicsList.add(new Topics("6.","pdf10"));
    coverList.add(new Cover("Cover 2",topicsList));

     sendData();



void sendData()

    customAdapter=new CustomAdapter(coverList, MainActivity.this);
    expandableListView.setAdapter(customAdapter);

& 自定义适配器:

公共类 CustomAdapter 扩展 BaseExpandableListAdapter

List<Cover>coverList;
Context context;

public CustomAdapter(List<Cover> coverList, Context context) 
    this.coverList = coverList;
    this.context = context;



//parent size count
@Override
public int getGroupCount() 
    return coverList.size();


@Override
public int getChildrenCount(int i) 
    return coverList.get(i).getTopicsList().size();


//position set
@Override
public Object getGroup(int i) 
    return coverList.get(i);


@Override
public Object getChild(int i, int i1) 
    return coverList.get(i).getTopicsList().get(i1);


//id
@Override
public long getGroupId(int i) 
    return (i);


@Override
public long getChildId(int i, int i1) 
    return i1;


@Override
public boolean hasStableIds() 
    return true;


@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewgroup) 

    view= LayoutInflater.from(context).inflate(R.layout.cover_item,viewgroup, false);
    TextView coverName=(TextView)view.findViewById(R.id.coverTitle);
    coverName.setText(coverList.get(i).getCoverName());

    ImageView imageView=(ImageView)view.findViewById(R.id.arrow);

    if (b==true)
    
        imageView.setRotation(90);
    
    else if (b==false)
    
        imageView.setRotation(0);
    


    return view;


@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewgroup) 
    view= LayoutInflater.from(context).inflate(R.layout.topic_item,viewgroup, false);
    TextView topicName=(TextView)view.findViewById(R.id.topicTitle);
    topicName.setText(coverList.get(i).getTopicsList().get(i1).getTopicName());

    CardView cardView=(CardView)view.findViewById(R.id.topicClick);

    cardView.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 

            Intent intent =(new Intent(context, FullView.class));
            intent.putExtra( "fileName",coverList.get(i).getTopicsList().get(i1).getFileName());
            context.startActivity(intent);



        
    );

    return view;


@Override
public boolean isChildSelectable(int i, int i1) 
    return true;

【问题讨论】:

【参考方案1】:

您的按钮点击监听器在哪里?我是根据对您问题的理解来回答的。

您必须更改addData() 或者您可以使用计数器来处理下一个和上一个按钮。假设onNext() 将计数器递增 1,onPrevious() 将计数器递减 1。这样您就可以将此计数器用作数组的索引来获取当前的 pdf。

我希望这就是你要问的。如果没有,则分享按钮点击处理代码。

【讨论】:

好的。感谢回复。抱歉,我没有分享点击列表。它在自定义适配器上。我现在已将其添加到我的问题中。 我假设您正在 MainActivity 中创建数组并将其加载到适配器,您将在其中将文件名传递给 Fullview 活动以显示在 PdfView 中,并且您需要一个按钮用于下一个或上一个 pdf 文件相同的活动(FullViewActivity)。如果这是您要问的,那么您需要将整个数组传递给具有当前适配器位置的全视图活动,那么您必须手动维护一个计数器,以通过递增或递减 1 从数组中获取 pdf 文件名并将其加载到pdf 视图。希望这是您正在寻找的。​​span> 或者只是将当前适配器位置传递给 FullViewActivity 并在那里添加与 MainActivity 中相同的数组创建方法,然后使用当前索引获取当前 pdf 但您仍然必须编写手动计数器逻辑下一个和上一个。

以上是关于在android studio中使用上一个和下一个按钮打开不同的pdf文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android Studio 中使用按钮按初始筛选并使用 SQLite 将其显示在另一个活动上

Android Studio 安装在 SSD 上,但 Android Studio 使用 100% HDD

用android studio 编写的程序可以在ios上运行吗

在 Unity 中使用 Android Studio 上的类

如何在Android Studio上使用Github

在具有上一个和下一个按钮的文本框中显示单个日期