RecyclerView简介:
RecyclerView是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式。它被作为ListView和GridView控件的继承者,在最新的support-V7版本中提供支持。它的灵活性和可替代性比ListView更好,下面为大家介绍一下RecyclerView的简单使用步骤。
步骤一:导入包
compile 'com.android.support:recyclerview-v7:23.0.1'
步骤二:在(activity_main.xml)布局中添加RecyclerView,另外创建一个RecyclerView的项布局(Rec_item.xml)
activity_main.xml
<android.support.v7.widget.RecyclerView android:id="@+id/buy_recyclerView" android:layout_width="match_parent" android:layout_height="wrap_content" android:scrollbars="vertical" //表示显示垂直的滚动条 ></android.support.v7.widget.RecyclerView>
rec_item.xml,在这里为了方便起见我添加一个TextView就好
<TextView步骤三:MainActivity.class(主界面)
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rec_tv"
/>
private RecyclerView mRecyclerView; //声明Recyclerview
private Rec_Adapter mRec_Adapter; //声明适配器
private List<String> datas = new ArrayList<>(); //用于存储获取的数据
mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);
mRec_Adapter = new Rec_Adapter(datas); //将数据传入适配器
mRecyclerView.setAdapter(mRec_Adapter); //将适配器传入RecyclerView
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));//设置RecyclerView的样式
在这里为大家介绍一下RecyclerView的样式,可分为ListView、GridView、瀑布流的效果。上面为ListView的效果。
GridView效果:
mRecyclerView.setLayoutManager(new GridLayoutManager(this,3));
或者
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.HORIZONTAL));//水平、
瀑布流效果:
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL));//垂直
public class Rec_Adapter extends RecyclerView.Adapter<Rec_Adapter.ViewHolder> // 此处一定要继承RecyclerView.Adapter,尖括号内传入泛型Holder,此处的Holder需要在Rec_Adapter中创建一个内部类。继承了RecyclerView.Adapter后要重写几个方法,直接上代码。
以上就是RecyclerView的基本使用实现,另外RecyclerView还有一些方法,如删除,添加项等等,下次将为大家奉上。private LayoutInflater inflater;
private List<String> mdatas;public Rec_Adapter(List<String> mdatas) {
this.mdatas = mdatas;
} // 适配器的构造方法,用于传入数据
class Rec_Holder extends RecyclerView.ViewHolder{ //内部类,将控件绑定起来,这里只绑定了一个TextView.
TextView rec_tv;
public Rec_Holder(View itemView) {
super(itemView);
rec_tv = (TextView) itemView.findViewById(R.id.rec_tv); //通过findViewById()绑定控件
}
}@Override
public Rec_Holder onCreateViewHolder(ViewGroup parent, int viewType) { //创建ViewHolder,返回每一项的布局。
inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.rec_item,parent,false);
return new Rec_Holder(view);
}
@Override
public void onBindViewHolder(Rec_Holder holder, int position) { //将数据跟控件绑定起来
holder.rec_tv.setText(mdatas.get(position)); //我在这里实现的是在每项中显示项的位置}@Override
public int getItemCount() { //在此处将返回项的数目
return mdatas.size();
}