这只是我在学Android过程中对于所学知识的巩固和方便日后查询的学习笔记,能帮助到有需要的和我一样的初学者就更好了
RecyclerView作为ListView的升级版功能自然是多得多,使用起来略微比ListView复杂一点
首先
要在gradle中添加依赖
compile 'com.android.support:recyclerview_v7:24.2.1'
其实一看就知道是support库中的,v7后面的数字修改为此闭包中前面的v7版本号即可
其次
和ListView相同的是都要有布局文件item.xml、所要加载的对象的类(ListView篇中的News类)
不同就在于Adapter类了
新建MyAdapter继承RecyclerView.Adapter<MyAdapter.ViewHolder>类并重写
1.构造方法
2.ViewHolder onCreateViewHolder(ViewGroup parent ,int ViewType)
3.onBindViewHolder(ViewHolder holder ,int position)
4.int getItemCount()
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
//很显然<>中的参数为我们新建的MyAdapter的内部类
private List<News> mNewsList;
static class ViewHolder extends RecyclerView.ViewHolder{
View Newsviwe;
TextView title;
TextView content;
public ViewHolder(View v){
super(v);
Newsview=v;
title=(TextView)v.findViewById(....);
content=(TextView)v.findViewById(....);
}
}
public MyAdapter(List<News> Newslist){
mNewslist=Newslist;
}
@override
public ViewHolder onCreateViewHolder(ViewGroup parent ,int ViewType){
View view=LayoutInflater.from(parent.getcontext).inflate(R.layout.item ,parent ,false);
final ViewHolder holder=new ViewHolder(view);
holder.NewsView.setonClickListener(new View.onClickListener(){
//此为整个条目(其他内容也定义点击事件是为空白处)
public void onclick(View v){
//点击响应的逻辑
}
});
holder.title.setonClickListener(......);//此为标题自己的点击响应
holder.content.setonClickListener(......)//此为摘要的点击响应
//以上体现了不同控件可以设置不同的点击响应
return holder;
}//加载布局、创建holder、设置点击事件
@override
public void onBindViewHolder(ViewHolder holder ,int position){
News news=mNewslist.get(position);
holder.title.setText(......);
holder.content.setText(......);
}//为每一项内容赋值
@override
public int getItemCount(){
return mNewslist.size();
}//返回总的item数量
}
使用时
List<News> newslist;
RecyclerView recycler=(RecyclerView)findViewById(R.id.recycler_view);
LinearLayoutManager manager=new LinearLayoutManager(context);
manager.setOrientation(LinearLayoutManager.HORIZOINTAL);
recycler.setLayoutManager(manager);
MyAdapter adapter=new MyAdapter(newslist);
recycler.setAdapter(adapter);
滚动方向
水平方向
LinearLayoutManager manager=new LinearLayoutManager(this);
manager.setOrientation(LinearLayoutManager.HORIZONTAL);
recycler.setLayoutManager(manager);
瀑布流
StaggeredGridLayoutManager manager=new StaggeredGridLayoutManager(3,StaggeredGrideLayoutManager.VERTICAL);
recycler.setLayoutManager(manager);
//参数中3为列(排)数