换新公司很久了,也很久没有写文章了(哎,新公司太压榨人了QAQ,下班很晚)。以后尽量保持一周一更。最近打算整理一下来了新公司学的东西(哎,突然发现要学的东西太多了,记不住哇)
一. RecycleView的基本使用:
来了新公司后才慢慢的接触了RecycleView,之前实习的公司还是用的listView和gridview,真是太落后了,慢慢接触了RecycleView,发现这个控件真是太好用了。(自从用了RecycleView,腿也不痛了,腰也不酸了,上楼也有劲了)。
1.首先添加依赖
在gradle中添加依赖(尽量使用implementation吧,到今年年底,谷歌爸爸就不让用compile了)
implementation 'com.android.support:recyclerview-v7:27.0.2'
2.在xml代码中导入
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
3.代码中使用
mRecyclerView = findViewById(R.id.recyclerView);//获取recycleview的实例。
//设置recycleview的样式,这里先以单行的垂直方向上为例。
mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
//给RecycleView添加适配器,list定义一组数就可以,这里就不详细贴出了。
mAdapter = new MyRecyclerViewAdapter(list);
mRecyclerView.setAdapter(mAdapter);
4.adapter中item的定义
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/item_tx"
android:layout_width="match_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="10dp"
android:layout_gravity="center_horizontal"
android:text="Item"/>
</LinearLayout>
5.adapter的配置(重要部分)
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {
private List<String> list;
public MyAdapter(List<String> list) {
this.list = list;
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_base_use, parent, false);
MyAdapter.ViewHolder viewHolder = new MyAdapter.ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
holder.mText.setText(list.get(position));
}
@Override
public int getItemCount() {
return list.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
TextView mText;
ViewHolder(View itemView) {
super(itemView);
mText = itemView.findViewById(R.id.item_tx);
}
}
}
这个时候就可以运行出来了。
6.另外也可以用别的方式更换布局
设置水平布局,这里设置的是水平方向的,也可以设置成VERTICAL水平的。
mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
设置网格布局,这里的3,可以设置为3列。
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
设置瀑布流布局,这个一般是用来显示那些item高度不一的布局的
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL));
7.设置分割线
通过下面的方法就可以添加分割线,不过添加的是系统默认的,高度为2px,颜色为灰色。
mRecyclerView.addItemDecoration(new RecycleViewDivider(mContext, LinearLayoutManager.VERTICAL));
可以添加自定义drawable的分割线
mRecyclerView.addItemDecoration(new RecycleViewDivider(
mContext, LinearLayoutManager.VERTICAL, R.drawable.divider_mileage));
添加自定义分割线的高度和颜色
mRecyclerView.addItemDecoration(new RecycleViewDivider(
mContext, LinearLayoutManager.VERTICAL, 10, getResources().getColor(R.color.divide_gray_color)));
OK,这一章先讲这么多,下一章介绍一下recycleView的点击事件的处理。