美文网首页
工作笔记 |(周记1)RecycleView使用

工作笔记 |(周记1)RecycleView使用

作者: 谁动了我的代码QAQ | 来源:发表于2018-09-18 17:17 被阅读0次

换新公司很久了,也很久没有写文章了(哎,新公司太压榨人了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的点击事件的处理。

相关文章

网友评论

      本文标题:工作笔记 |(周记1)RecycleView使用

      本文链接:https://www.haomeiwen.com/subject/jcnugftx.html