您的位置:首页 > 其它

RecyclerView简单使用

2017-08-01 15:05 225 查看
RecyclerView首先需要导入一个依赖包注意要V7的依赖.然后在XML文件里创建出RecyclerView

<android.support.v7.widget.RecyclerView

android:id="@+id/recycler_view"

android:layout_width="match_parent"

android:layout_height="match_parent">

</android.support.v7.widget.RecyclerView>

回到MainActivity的onCreate方法里初始化控件

//初始化控件

recycler_view = (RecyclerView) findViewById(R.id.recycler_view);

写一个填充数据的方法,这里先用假数据,一般我们都是在网络上求情数据

private void loadListData(){

//写一个List集合,集合的泛型写你的Bean类

List<DataBean> list = new ArrayList<>();

//写个循环添加数据

for(int i = 0; i < 10; i++ ){

//把Bean类实例化出来

DataBean bean = new DataBean();

//给Bean里的值赋值

bean.icon = R.drawable.mm;//假数据,自定义的图片(一般都在网上请求数据)

bean.name = "带你飞";//假数据,自己定义(一般都在网上请求数据)

//最后把数据装到集合里

list.add(bean);

}

//创建适配器

RecyclerAdapter adapter = new RecyclerAdapter(this,list);

//设置适配器

recycler_view.setAdapter(adapter);

//创建布局管理器,布局管理器所需参数,上下文

LinearLayoutManager linearLayout = new LinearLayoutManager(this);
//通过布局管理器,可以控制条目排序顺序 true是反向显示,false是正常显示

linearLayout.setReverseLayout(true);

//设置RecyclerView显示方向是水平还是垂直

linearLayout.setOrientation(LinearLayoutManager.HORIZONTAL);

//设置布局管理器,参数 linearLayout对象

recycler_view.setLayoutManager(linearLayout);

 

}

需要一个RecyclerView适配器,注意要指定泛型,一般我们就是类名的ViewHolder继承ViewHolder(内部已经实现了复用优化机制)

public class RecyclerAdapter extends RecyclerView.Adapter <RecyclerAdapter.ListViewHolder>{

//创建构造函数

private Context context;

private List<DataBean> list;

//构造方法,一般需要接受两个参数,上下文,集合参数(包含了我们所需要的数据)

public RecyclerAdapter(Context context,List<DataBean> list){

context=context;

list = list;

}

//创建ViewHolder,并把ViewHolder返回出去

@Override
public ListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//转换一个View布局对象,决定了item的样子,1:上下文,2:加载的布局,3:一般设为空
View view =  View.inflate(context, R.layout.item_list,null);
//创建一个ListViewHolder对象
ListViewHolder listViewHolder = new ListViewHolder(view);
//把ViewHolder对象传出去
return listViewHolder;
}
//当ViewHolder跟数据绑定是回调
@Override
public void onBindViewHolder(ListViewHolder holder, int position) {
//从集合里拿对应item的数据对象
DataBean dataBean = datas.get(position);
//给Holder里面的数据设置对象
holder.setData(dataBean);
}
//根据集合长度定义item数量
@Override
public int getItemCount() {
//数据不为空,有多少条数据就加载多少条
 if(datas != null && datas.size() > 0){
return  datas.size();
}
return 0;
}


public class ListViewHolder extends RecyclerView.ViewHolder {

public ListViewHolder(View itemView) {
super(itemView);
//找控件初始化
miv = (ImageView) itemView.findViewById(R.id.item_iv);
mtv = (TextView) itemView.findViewById(R.id.item_tv);
}

public void setData(DataBean data){

//给ImageView设置图片数据

miv.setImageResource(data.icon);

//给Text设置文本信息

mtc.setText(data.name);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: