给RecycleView初学者:RecycleView的基础用法和一个Demo
Ray87L
8年前
<p>研究了一下午RecyclerView的Adapter写法。网上看了很多教程好坑,到处都是用自己定义的类看的我云里雾里。。现在总算搞明白了,RecyclerView的比较基础的入门用法。。</p> <p>下面给跟我一样刚接触的同学写一下我学写Adapter时候做的详尽笔记,希望能帮到看到这篇文章的、和我几个小时前一样还在纠结的菜鸟们。</p> <p>RecycleView的用法主要分三个部分:</p> <p>1.在你的布局里创建一个RecyclerView,然后创建一个需要在RecyclerView内循环填充的布局</p> <p>2.写RecyclerView的Adapter</p> <p>3.在需要调用RecyclerView的Activity中配置RecyclerView</p> <p>1.省略</p> <p>2.RecyclerView的Adapter写法 (代码中的注释已经把我所了解的思路详尽的介绍清楚了)</p> <pre> <code class="language-java">//继承父类 public class SettingsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { //1.对各种需要传入的数据进行声明 private Context context;//上下文环境 private String[] settings;/*根据需要更改*///接入数据的类型 //2.构造方法,作为适配器接收参数的入口 public SettingsAdapter(Context context, String[] data/*根据需要更改*/) { this.context = context;//上下文入口 this.settings = data;//数据入口 } //4.默认需要实现的方法,负责为Item创建视图容器,并且返回一个该容器的实例传给onBindViewHolder方法 @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //以下一步:负责实例化待逐条填充的layout,将其转换为view View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_settings, parent, false); //以下一步:负责实例化传入的待填充的view的容器 MyViewHolder myViewHolder = new MyViewHolder(view); return myViewHolder; } //5.默认需要实现的方法,负责将数据写入在Item布局的元素里 @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { /*针对不同的元素写入数据,根据需要更改*/ MyViewHolder myViewHolder= (MyViewHolder) holder; myViewHolder.textViewSetting.setText("settings"); } //6.告诉适配器一共有多少条数据需要填充 @Override public int getItemCount() { return settings.length; } //3.viewholder的内部类,用于构建viewholder和其要填充的item中的元素的对象,并且将对象和其中的元素绑定 //总结:将布局的规则用代码实例化为对象,将布局中的元素用代码实例化为对象的属性,方便onBindViewHolder方法进行写入 class MyViewHolder extends RecyclerView.ViewHolder { public TextView textViewSetting;/*根据需要更改*///初始化细分布局中的元素 public MyViewHolder(View itemView) { super(itemView);//这里的itemView指的是细分布局,即需要进行重复构建的布局 textViewSetting = (TextView) itemView.findViewById(R.id.shezhixiang);/*根据需要更改*///布局中的TextView需要填写 } } }</code></pre> <p>3.为每个RecyclerView创建一个LinerLayoutManager:</p> <pre> <code class="language-java">LinearLayoutManager linearLayoutManager1 = new LinearLayoutManager(this);</code></pre> <p>将管理器与RecyclerView绑定:</p> <pre> <code class="language-java">recyclerView_changgui.setLayoutManager(linearLayoutManager1);</code></pre> <p>为RecyclerView绑定适配器:</p> <pre> <code class="language-java">recyclerView_changgui.setAdapter(new SettingsAdapter(this, new String[4]));</code></pre> <p> </p> <p>来自:http://www.jianshu.com/p/74ad6a002d5b</p> <p> </p>