RecycleView的简单使用总共分为以下几个步骤:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:orientation="vertical"
android:layout_margin="5dp"
>
<ImageView
android:id="@+id/smsImage"
android:layout_width="50dp"
android:layout_height="50dp"
/>
<TextView
android:id="@+id/smsText"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:textSize="20sp"
/>
</LinearLayout>
定义的是图片加文字,注意一下,这个layout布局的高宽需要控制好,防止出现遮挡或者显示不全的情况。
public class SmsRecycleViewAdpter extends RecyclerView.Adapter<SmsRecycleViewAdpter.SmsViewHolder> {
private List<Sms_pojo> mDatas;
class SmsViewHolder extends RecyclerView.ViewHolder {
TextView tv;
ImageView imageView;
public SmsViewHolder(@NonNull View itemView) {
super(itemView);
tv = itemView.findViewById(R.id.smsText);
imageView = itemView.findViewById(R.id.smsImage);
}
}
@NonNull
@Override
public SmsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sms_item, parent, false);
SmsViewHolder holder = new SmsViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull SmsViewHolder holder, int position) {
Sms_pojo sms_pojo = mDatas.get(position);
holder.tv.setText(sms_pojo.getName());
holder.imageView.setImageResource(sms_pojo.getImageId());
}
public SmsRecycleViewAdpter(List<Sms_pojo> datas) {
this.mDatas = datas;
}
@Override
public int getItemCount() {
return mDatas.size();
}
}
创建这个适配器需要有几个步骤,并不是对着网上的程序敲进去进行了。首先创建适配器类并继承RecyclerView.Adapter没有什么毛病,至于后面的泛型,是后添加的 。创建好了适配器(SmsRecycleViewAdpter)类之后,系统会为我们自动实现下面的方法:
@NonNull
@Override
public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return false;
}
@Override
public void onBindViewHolder(@NonNull Holder holder, int position) {
}
@Override
public int getItemCount() {
return 0;
}
}
接下来需要在该类中创建一个内部Holder类(public),继承自Holder,Holder的英文翻译是持有者,我的理解它应该是View管理者,这与它自动创建的构造方法有关。下一步将一起完成适配器类的设置。
recyclerView.addItemDecoration(new DividerItemDecoration(mContext,LinearLayoutManager.HORIZONTAL));
自定义分割线方法:
DividerItemDecoration dividerItemDecoration=new DividerItemDecoration(mContext, LinearLayout.HORIZONTAL);
dividerItemDecoration.setDrawable(mContext.getDrawable(R.drawable.divider));
recyclerView.addItemDecoration(dividerItemDecoration);
这里的R.drawable.divider资源文件为分割线资源文件,创建方法为在drawable中创建divider.xml,具体样式可以自行设置,例如(如果为横向就设置分割线的宽,纵向就设置分割线的高):
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<size android:width="1dp" />
<solid android:color="#512DA8"/>
shape>
最后:
如何让recycleView中出现内容呢,别忘了创建的List<>,通过把pojo映射类放入<>,就可以很轻松的实现内容的显示。比如要添加一组数据,就可以通过pojo类初始化一个对象,然后把该初始化的对象添加进List<>中,例如(我这里使用的是一个循环,显示20组数据):
list = new ArrayList<pojo>();
for (int i = 0; i < 20; i++) {
Sms_pojo sms_pojo = new Sms_pojo("获取赞"+i+"个", R.drawable.head);
mdate.add(sms_pojo);
}
这样操作就能将recycleView进行简单创建和使用了,与ListView区别就在于内容呈现方式,RecycleView除了线性布局外还有网格布局和瀑布流布局并且切换布局很方便,只需要修改几行代码就可以了,可以自行百度。