RecyclerView(比ListView、GridView更强大的滚动控件)
Android Studio中添加库
compile 'com.android.support:recyclerview-v7:24.2.1'
布局文件中和ListView一致
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
新建适配器
public class RvAdapter extends RecyclerView.Adapter<RvAdapter.ViewHolder> {
private List<Student> ml;
public RvAdapter(List<Student> ml) {
this.ml = ml;
}
适配器继承RecyclerView.Adapter泛型为RvAdapter中的ViewHolder
/**
* 创建ViewHolder实例
* @param parent
* @param viewType
* @return
*/
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_rv, parent,false);
ViewHolder holder = new ViewHolder(inflate);
return holder;
}
/**
* 对RecyclerView子项赋值
* @param holder
* @param position
*/
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.iv.setImageResource(ml.get(position).getIv());
holder.tv.setText(ml.get(position).getTv());
}
/**
* 拥有子项总数
* @return
*/
@Override
public int getItemCount() {
return ml.size();
}
在Activity中制定RecyclerView的布局方式
1.线性布局setOrientation设置横向还是纵向
LinearLayoutManager lm = new LinearLayoutManager(this);
lm.setOrientation(LinearLayoutManager.HORIZONTAL);
rv.setLayoutManager(sm);
rv.setAdapter(adapter);
2.网格布局,3代表3列GridLayoutManager gm = new GridLayoutManager(this,3);
rv.setLayoutManager(gm);
rv.setAdapter(adapter);
2.瀑布流布局,3代表列数或行数,StaggeredGridLayoutManager.HORIZONTAL代表水平方向StaggeredGridLayoutManager sm = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.HORIZONTAL);
rv.setLayoutManager(sm);
rv.setAdapter(adapter);