一、添加依赖库
想要使用RecyclerView需要在Dependencies闭包中添加如下内容:
compile 'com.android.support:recyclerview-v7:24.2.1'
二、在布局中创建RecyclerView控件:
<android.support.v7.widget.RecyclerView
android:id="@+id/recyler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
为RecyclerView设置item布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="55dp"
android:background="@drawable/recycler_item_selector"
android:orientation="vertical">
<TextView
android:id="@+id/notes_content"
android:layout_width="match_parent"
android:layout_height="54.5dp"
android:ellipsize="end"
android:gravity="center_vertical"
android:paddingLeft="16sp"
android:singleLine="true"
android:text="hello lanbots"
android:textColor="#333333"
android:textSize="15sp" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginLeft="16dp"
android:background="#dedede" />
</LinearLayout>
三、RecyclerView的适配器:
package com.linbots.simplenotes.ui.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.linbots.simplenotes.R;
import com.linbots.simplenotes.db.Notes;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by LinBots on 2017/4/24.
*/
public class NotesAdapter extends RecyclerView.Adapter<NotesAdapter.ViewHolder> {
private Context context;
private List<Notes> mList;
public NotesAdapter(Context context, List<Notes> mList) {
this.context = context;
this.mList = mList;
}
static class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.notes_content)
TextView notesContent;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item_notes, parent, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Notes notes = mList.get(position);
holder.notesContent.setText(notes.getContent());
}
@Override
public int getItemCount() {
return mList.size();
}
}
四、Activity的代码如下:
@BindView(R.id.recyler_view)
RecyclerView mRecyclerView;
private NotesAdapter mAdapter;
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(layoutManager);
mAdapter = new NotesAdapter(this, notes);
mRecyclerView.setAdapter(mAdapter);
RecyclerView的使用和ListView很相似。
RecyclerView需要通过setLayoutManager()方法设置布局管理器,RecyclerView有三个默认布局管理器LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManager,都支持横向和纵向排列以及反向滑动。如果想把RecyclerView改为横向滑动,也可以通过调用
layoutManager.setOrientation(GridLayoutManager.HORIZONTAL);
RecyclerView不像ListView一样提供item的点击监听,所以我们只能自己实现。RecyclerView的item点击事件监听可以为item的view设置监听,也可以在mRecyclerView.addOnItemTouchListener里去判断手势来实现。
通过调用如下方法可以设置item加载或移除时的动画
mRecyclerView.setItemAnimator(new DefaultItemAnimator());