1.布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v7.widget.RecyclerView
android:id="@+id/id_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
2.item布局文件
<?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="wrap_content" >
<TextView
android:id="@+id/id_num"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="1" />
</FrameLayout>
3.设置布局管理器
先看LinearLayoutManager,该类有两个构造函数。
LinearLayoutManager(context)
LinearLayoutManager(context, orientation, reverseLayout)
第一个参数是Context,第二个参数是布局方向,其值可以取
LinearLayoutManager.HORIZONTAL 水平
LinearLayoutManager.VERTICAL 垂直
第三个参数是是否逆向布局如果设置为true,则反向开始布局,现在我们将布局设置为水平,并逆向布局,使用下面的代码
LayoutManager layout = new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,true);
用过了线性布局,我们再换一个布局,GridLayoutManager网格布局,设置2列,默认垂直布局
GridLayoutManager layout = new GridLayoutManager(this,2);
跟线性布局一样,网格布局还有一个构造函数,其意义同线性布局,这里,我们不适用逆向布局,设置2列,垂直
LayoutManager layout=new GridLayoutManager(this, 2, GridLayoutManager.VERTICAL, false);
还有一个布局管理器就是流式布局管理器,该类只有一个构造函数,一个是列数或者行数,另一个是布局方向,依然看代码
LayoutManager layout=new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
设置布局样式方法
layout.setOrientation(LinearLayoutManager.HORIZONTAL);
4.adapter中的代码
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private MyAdapter.MyItemClickListener mItemClickListener;
private LayoutInflater inflater;
private List<String> list;
private Context context;
public MyAdapter(Context context, List<String> list){
this.inflater = LayoutInflater.from(context);
this.list = list;
this.context = context;
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_my_yu_yue, parent, false);
MyAdapter.ViewHolder viewHolder = new MyAdapter.ViewHolder(view, mItemClickListener);
return viewHolder;
}
/**
* 像item中添加数据
* @param holder
* @param position
*/
@Override
public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
holder.tv_name.setText(list.get(position));
}
@Override
public int getItemCount() {
return list.size();
}
/**
* 获取textView的id和设置点击事件
*/
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public MyAdapter.MyItemClickListener myItemClickListener;
private TextView tv_name;
public ViewHolder(View itemView, MyAdapter.MyItemClickListener myItemClickListener) {
super(itemView);
this.myItemClickListener = myItemClickListener;
itemView.setOnClickListener(this);
tv_name = (TextView) itemView.findViewById(R.id.tv_name);
}
@Override
public void onClick(View v) {
if (myItemClickListener != null) {
myItemClickListener.onItemClick(v, getPosition());
}
}
}
public interface MyItemClickListener {
void onItemClick(View view, int position);
}
public void setItemClickListener(MyAdapter.MyItemClickListener myItemClickListener) {
this.mItemClickListener = myItemClickListener;
}
}
5.activity中调用代码
void initShow() {
//设置布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(linearLayoutManager);
//设置适配器
myAdapter = new MyAdapter(getContext(), list);
mRecyclerView.setAdapter(myAdapter);
//监听点击事件
myAdapter.setItemClickListener(new MyAdapter.MyItemClickListener() {
@Override
public void onItemClick(View view, int position) {
}
});
}
Android中RecyclerView与Scrollview组合使用(二)
Android中RecyclerView侧拉滑动删除功能实现