在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上运行吗