最近想写一个Android的阅读器,发现需要用到RecyclerView,这种界面就是大家经常用到的在App中不断往下滑动时所用的界面(替代ListView),看了一下相关资料,要用起来还蛮复杂的(对于像我这种初学者来说),所以写一下学习笔记,要把RecyclerView用起来大致分为四步吧:
1、首先要在项目中app目录下的Gradle 里面设置dependencies
dependencies {
………………
// implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0' //加入这一行
………………
}
2、在UI XML里面添加RecyclerView,还有新建一个RV里面小单元的fragment.xml,比如:
==================================这是主界面,文件名activity_main.xml==========================
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/pdfview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="I am text!"
android:scrollbars="vertical"
android:layout_marginTop="63dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/open"
app:layout_constraintVertical_bias="1.0" />
//………………还有好多界面元素
</androidx.constraintlayout.widget.ConstraintLayout> ===============================================================================================
============================这是RV里面的小单元,文件名image_row_item.xml=============
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center_vertical">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</FrameLayout>
================================================================================
3、需要编写一个RecyclerView.Adapter
3.1 Adapter里面要编写RecyclerView.ViewHolder: 这是RecyclerView里面显示的小单元占位类。
那么首先就新建一个类继承RecyclerView.ViewHolder,我所需要的是用于显示pdf页面的单元,命名就以pdf开头吧:
class PdfViewHolder extends RecyclerView.ViewHolder{//pdf的显示页面占位类
public ImageView imageView;//用一个imageView来显示pdf
public PdfViewHolder(@NonNull View itemView) {//此类必须有一个构造方法
super(itemView);
imageView=(ImageView)itemView.findViewById(R.id.imageView);//imageView对象指向上面image_row_item.xml所写的imageView
}
}
3.2 然后再写一个RecyclerView.Adapter,命名同样以pdf开头:
class PdfViewAdapter extends RecyclerView.Adapter<PdfViewHolder>{
Bitmap[] bitmaps;//建一个bmp的数组用来存储已经处理成bmp格式的pdf文件页面;
public PdfViewAdapter(Bitmap[] bmp){//构造函数,传入一个bmp的数组,赋值给本类的bmp数组
bitmaps=bmp;
}
//以下三个方法为此类要求必须重写的方法:
@Override
public PdfViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {//方法的功能是对要显示的小单元内容进行打包传给小单元占位类
View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.image_row_item,parent,false);//将小单元实例化成一个可交互的显示小单元
return new PdfViewHolder(v);//把显示小单元传给小单元占位类
}
@Override
public void onBindViewHolder(@NonNull PdfViewHolder page, int position) {//设置每个小单元显示的内容
page.imageView.setImageBitmap(bitmaps[position]);//从bmp数组的相应位置获取图片并放入显示小单元相应的image变量中
}
@Override
public int getItemCount() {
return bitmaps.length;
}
}
4、然后我们在App的主方法MainActivity中调用显示我们上面写好的RecyclerView:
public class MainActivity extends Activity implements View.OnClickListener{
Bitmap mBitmap=Bitmap.createBitmap(430,798,Bitmap.Config.ARGB_8888);
BitmapDrawable bitmapDrawable;
Bitmap[] bitmaps;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Canvas canvas = new Canvas();
//看好了,下面就是见证奇迹的时刻了:
RecyclerView recyclerView = findViewById(R.id.pdfview);//新建一个rv对象指向界面中的rv元素
LinearLayoutManager linearLayoutManager= new LinearLayoutManager(this);//新建一个线性布局
recyclerView.setLayoutManager(linearLayoutManager);//设置我们的rv显示采用线性布局
PdfViewAdapter pdfViewAdapter=new PdfViewAdapter(openPdf());//openPdf方法将pdf文件全部转化为bmp放入数组传给我们之前写好的Adapter
recyclerView.setAdapter(pdfViewAdapter);//rv设置adapter
}
}
这篇博客介绍了如何在Android应用中使用RecyclerView,包括在Gradle中配置依赖、XML布局文件中添加RecyclerView、创建适配器及ViewHolder,以及在MainActivity中初始化和显示RecyclerView的步骤,适合Android开发初学者。
1万+

被折叠的 条评论
为什么被折叠?



