星空网 > 软件开发 > 操作系统

组件RecyclerView的应用(一)

首先我们知道RecyclerView组件是ListView的升级版,今天先介绍基础的RecyclerView的基本布局RecyclerView.Adapter和LayoutManager

第一:

LayoutManager

我们知道ListView只能在垂直方向上滚动,Android API没有提供ListView在水平方向上面滚动的支持。或许有多种方式实现水平滑动,ListView并不是设计来做这件事情的。但是RecyclerView相较于ListView,在滚动上面的功能扩展了许多。它可以支持多种类型列表的展示要求,主要如下:


LinearLayoutManager ,可以支持水平和竖直方向上滚动的列表。

StaggeredGridLayoutManager ,可以支持交叉网格风格的列表,类似于瀑布流或者Pinterest。

GridLayoutManager ,支持网格展示,可以水平或者竖直滚动,如展示图片的画廊。

因此RecyclerView相对于ListView来说自定义性扩展了很多

第二:

RecyclerView.Adapter和ListView的BaseAdapter不同之处在于:BaseAdapter都是在getView一个方法中实现的,包括View的实例化以及组件的绑定。在RecyclerView.Adapter中,则提供了RecyclerView.ViewHolder机制,这个类必须我们自己定义,主要是用来保存视图的类,主要在onCreateViewHolder中实现View的保存

public static class ViewHolder extends RecyclerView.ViewHolder
{
public TextView itemText;
public ViewHolder(View itemView) {
super(itemView);
itemText = (TextView)findViewById(R.id.item_text);
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = layoutInflater.inflate(R.layout.item_recyclerview,parent,false);
return new ViewHolder(view);
}
另外还需要实现getCount()方法,也就是返回item的数量,另外 onBindViewHolder()方法实现对应的组件和数据绑定
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
((ViewHolder)holder).itemText.setText(titleList.get(position));
}

以下为我写的基本实现RecyclerView功能的一段小代码
/**
适配器类
**/

public class RecyclerAdapter extends RecyclerView.Adapter {  private List<String> titleList;  private LayoutInflater layoutInflater;  public RecyclerAdapter(Context context)  {    this.titleList = new ArrayList<>();    for(int i=0;i<30;i++)    {      titleList.add("item"+i);    }    layoutInflater = LayoutInflater.from(context);  }  @Override  public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {    View view = layoutInflater.inflate(R.layout.item_recyclerview,parent,false);    return new ViewHolder(view);  }  @Override  public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {    ((ViewHolder)holder).itemText.setText(titleList.get(position));  }  @Override  public int getItemCount() {    return titleList.size();  }  public static class ViewHolder extends RecyclerView.ViewHolder  {    //public TextView itemText;    public ViewHolder(View itemView) {      super(itemView);    }  }}

/**

主界面代码  

**/

    mRecyclerView = (RecyclerView)pageList.get(SPORT).findViewById(R.id.recyclerview);    mRecyclerView.setHasFixedSize(true);    mLinearLayoutManager = new LinearLayoutManager(this);    mLinearLayoutManager.setOrientation(OrientationHelper.VERTICAL);    RecyclerAdapter mRecyclerAdapter = new RecyclerAdapter(this);    mRecyclerView.setLayoutManager(mLinearLayoutManager);    mRecyclerView.setAdapter(mRecyclerAdapter);

  注:pageList.get(SPORT)为自己定义的一个实例化view,读者可以根据自己需要定制不同的


原标题:组件RecyclerView的应用(一)

关键词:ie

ie
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

义乌fba:https://www.goluckyvip.com/tag/47541.html
义乌fba代理:https://www.goluckyvip.com/tag/47542.html
义乌fba海运:https://www.goluckyvip.com/tag/47543.html
义乌fba日本:https://www.goluckyvip.com/tag/47544.html
义乌fba头程:https://www.goluckyvip.com/tag/47545.html
义乌fba专线:https://www.goluckyvip.com/tag/47546.html
从园岭新村到大梅沙海滨总站坐什么车:https://www.vstour.cn/a/363191.html
七月份适合去日本旅游吗 7月份去日本哪里好玩:https://www.vstour.cn/a/363192.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流