环境

studio中需要导入recyclerview的包

使用

范例1:存放数据

package com.example.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.RecyclerView;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    private RecyclerView recyclerView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        recyclerView = new RecyclerView(this);//1、创建一个recyclerview        setContentView(R.layout.activity_main);        recyclerView.setAdapter(new RecyclerView.Adapter() {//2.位recyclerview添加adapter            @Override            public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {                return new ViewHolder(new TextView(viewGroup.getContext()));//4.创建viewholder            }            @Override            public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {//这里可以对控件赋值,第二个参数是索引                ViewHolder vh =(ViewHolder)viewHolder;                vh.getTv().setText("Item"+i);            }            @Override            public int getItemCount() {                return 10;            }            //3创建viewholder            class ViewHolder extends RecyclerView.ViewHolder{                private TextView tv;                public ViewHolder(View itemView) {                    super(itemView);                    tv = (TextView) itemView;                }                public TextView getTv(){                    return tv;                }            }        });    }}

范例2:存数组中数据

package com.example.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.RecyclerView;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    private RecyclerView recyclerView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        recyclerView = new RecyclerView(this);//1、创建一个recyclerview        setContentView(R.layout.activity_main);        recyclerView.setAdapter(new RecyclerView.Adapter() {//2.位recyclerview添加adapter            private String[] data = new String[]{"hello","jike","nihao","ds","dwe"};            @Override            public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {                return new ViewHolder(new TextView(viewGroup.getContext()));//4.创建viewholder            }            @Override            public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {//这里可以对控件赋值,第二个参数是索引                ViewHolder vh =(ViewHolder)viewHolder;                vh.getTv().setText(data[i]);            }            @Override            public int getItemCount() {                return data.length;            }            //3创建viewholder            class ViewHolder extends RecyclerView.ViewHolder{                private TextView tv;                public ViewHolder(View itemView) {                    super(itemView);                    tv = (TextView) itemView;                }                public TextView getTv(){                    return tv;                }            }        });    }}

范例3:使用资源文件自定义列表项
mainactivity:

package com.example.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.RecyclerView;public class MainActivity extends AppCompatActivity {    private RecyclerView recyclerView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        recyclerView = new RecyclerView(this);//1、创建一个recyclerview        setContentView(recyclerView );        recyclerView.setLayoutManager(new LinearLayoutManager(this));//一定要写manager        recyclerView.setAdapter(new MyAdapter());    }}

adapter:

package com.example.myapplication;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;/** * Created by 董梦娇 on 2015/11/8. */class MyAdapter extends RecyclerView.Adapter { //2.位recyclerview添加adapter    //数据初始化    private CellData[] data = new CellData[]{new CellData("title1","content1"),new CellData("title1","content1"),new CellData("title1","content1"),new CellData("title2","content2"),new CellData("title3","content3")};    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {        return new ViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_item,null));//4.利用布局解析器传入布局    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {//这里可以对控件赋值,第二个参数是索引        ViewHolder vh = (ViewHolder) viewHolder;        CellData cd = data[i];        vh.getTvTitle().setText(cd.getTitle());        vh.getTvContent().setText(cd.getContent());    }    @Override    public int getItemCount() {        return data.length;    }    //3创建viewholder    class ViewHolder extends RecyclerView.ViewHolder {        private View root;//1.view定义        private TextView tvTitle,tvContent;        public ViewHolder(View root) {//传过来的布局就是哪个layout_item            super(root);            //获取控件            tvTitle= (TextView) root.findViewById(R.id.tv_title);            tvContent = (TextView) root.findViewById(R.id.tv_content);        }        public TextView getTvContent() {//两个方法来获取title和content            return tvContent;        }        public TextView getTvTitle() {            return tvTitle;        }    }}

数据:

package com.example.myapplication;/** * Created by 董梦娇 on 2015/11/8. */public class CellData {    private String title;    private String content;    public CellData(String title, String content) {        this.title = title;        this.content = content;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public String getContent() {        return content;    }    public void setContent(String content) {        this.content = content;    }}

范例:瀑布流

main:

package com.example.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private RecyclerView recyclerView;    private List<CellData> datas;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        recyclerView = (RecyclerView) findViewById(R.id.recyclerview);        //设置布局       // recyclerView.setLayoutManager(new LinearLayoutManager(this));//一定要写manager       //通过StaggeredGridLayoutManager设置两列瀑布流        recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));        //初始化数据        init();        recyclerView.setAdapter(new MyAdapter(datas));    }    /** *初始化数据 */    private void init() {        datas = new ArrayList<>();        for (int i=0;i<10;i++) {            CellData data = new CellData(R.mipmap.baby);            datas.add(data);            CellData data1 = new CellData(R.mipmap.betifel);            datas.add(data1);            CellData data2 = new CellData(R.mipmap.fanbingbing1);            datas.add(data2);            CellData data3 = new CellData(R.mipmap.fanbingbing3);            datas.add(data3);            CellData data4 = new CellData(R.mipmap.gaoyuanyuan);            datas.add(data4);        }    }}

adapter:

package com.example.myapplication;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import java.util.List;/** * Created by 董梦娇 on 2015/11/8. */class MyAdapter extends RecyclerView.Adapter { //2.位recyclerview添加adapter    private List<CellData> data;    public MyAdapter(List<CellData> data) {        this.data = data;    }    //数据初始化    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {        return new ViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_item,null));//4.利用布局解析器传入布局    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {//这里可以对控件赋值,第二个参数是索引        ViewHolder vh = (ViewHolder) viewHolder;        CellData cd = data.get(i);        vh.getImageView().setImageResource(cd.getImgId());     // Log.d("log","控件值"+cd.getTitle()+";"+cd.getContent());    }    @Override    public int getItemCount() {        return data.size();    }    //3创建viewholder    class ViewHolder extends RecyclerView.ViewHolder {        private View root;//1.view定义        private ImageView imageView;        public ViewHolder(View root) {//传过来的布局就是哪个layout_item            super(root);            // this.root = root;            //获取控件            imageView = (ImageView) root.findViewById(R.id.img_recycler);        }        public ImageView getImageView() {            return imageView;        }    }}

数据:

package com.example.myapplication;/** * Created by 董梦娇 on 2015/11/8. */public class CellData {  private int imgId;    public CellData(int imgId) {        this.imgId = imgId;    }    public int getImgId() {        return imgId;    }    public void setImgId(int imgId) {        this.imgId = imgId;    }}

效果:

源码

更多相关文章

  1. 第十一节(Android常见控件二)
  2. Android在onCreate()中获得控件尺寸 (转)
  3. LinearLayout中控件不能居右对齐
  4. android检查sqlite数据库中是否存在某个元素
  5. Android(安卓)Bundle类
  6. Android(安卓)SQLite数据库异常: unable to open database file
  7. 元数据Meta Data
  8. mybatisplus的坑 insert标签insert into select无参数问题的解决
  9. 箭头函数的基础使用

随机推荐

  1. 【Gradle】Android(安卓)Gradle 多项目构
  2. Android(安卓)RadioGroup设置单选效果
  3. Android(安卓)获取drawable目录图片 并存
  4. Android(安卓)根据屏幕尺寸适配控件尺寸(
  5. ANR(1)---理解Android(安卓)ANR的信息收集
  6. Android(安卓)获取未读短信(sms)数量
  7. Android(安卓)Studio报错 程序包android.
  8. Android(安卓)启动模式
  9. android中scrollview与webview冲突事件
  10. Android本地相册图片URI转换绝对路径