Android学习随笔RecyClerView

简称增强版的ListView

app->build.gradle
 
 dependencies{
     compile 'xxx'
     //RecyClerView 我的版本是26+
     compile 'com.android.support:recyclerview- v7:26+'

 }

新建类ResultAdapter

//定义一个集合存放传入数据
private List<Result> resultList;
//构造函数
public ResultAdapter(List<Result> resultList){
this.resultList=resultList;

}

-----------------------------------------------------------------------------

定义一个内部类ViewHolder继承RecyclerView.ViewHolder
  static class ViewHolder extends RecyclerView.ViewHolder{
ImageView imgView;
TextView textView;

}

//构造函数传入一个View

public ViewHolder(View itemView){

扫描二维码关注公众号,回复: 1086917 查看本文章

super(itemView);
//通过布局获得实例
imgView=itemView.findViewById(R.id.xx_image);
textView=itemView.findViewById(R.id.xx_text);

}

-----------------------------------------------------------------------------

ResultAdapter 
继承了 RecyclerView 并给 RecyclerView内置的静态类

Adapter传入ResultAdapter自身定义的泛型类 ViewHolder

public class ResultAdapter extends RecyclerView.Adapter<ResultAdapter.ViewHolder>

//源类 public abstract static class Adapter<VH extends ViewHolder> 

-------------------------------------------------------------------------------

此外还要重写三个方法AIT enter即可
  @Override
  1. onCreateViewHolder//创建视图|布局器
  2. onBingViewHolder //赋值

  3. getItemCount    //获得数量

onCreateViewHolder(ViewGroup parent, int viewType) 
{  

//http://www.cnblogs.com/baipengzhan/p/6257510.html 对下列方法的一个追溯

        //LayoutInflater.from(parent.getContext()).inflate(R.layout.xx_item_layout,parent,false);

        //这个视图布局加载器来自(当前视图的上下文) 我认为它是读取了所有的xml布局,然后再进行二次筛选

       //三个参数 参数1为默认就是一个TextView一个ImageView的视图

      //参数2 使用当前的视图 也就是想要动态生成的视图

      //参数3 false使用第二个参数生成的xml视图 true使用 第一个参数的xml视图布局

// 如果分析错误还望指正

return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.xx_item_layout,parent,false));

}

--------------------------------------------------------------------------------------------------------------------------

package net.sumuyu.adapter;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import net.sumuyu.act.R;
import net.sumuyu.entity.Result;
import java.util.List;

/**
 * Created by 时秋 on 2018/5/7.
 */

public class ResultAdapter extends RecyclerView.Adapter<ResultAdapter.ViewHolder>{
    private List<Result> resultList;

    public ResultAdapter(List<Result> resultList){
        this.resultList=resultList;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        ViewHolder holder=new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.xx_item_layout,parent,false));
        return holder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Result c=resultList.get(position);
        holder.imgView.setImageResource(c.getImage());
        holder.textView.setText(c.getTitle());
    }

    @Override
    public int getItemCount() {
        return resultList.size();
    }


    static class ViewHolder extends RecyclerView.ViewHolder{
        ImageView imgView;
        TextView textView;
        public ViewHolder(View itemView) {
            super(itemView);
            imgView=itemView.findViewById(R.id.xx_image);
            textView=itemView.findViewById(R.id.xx_title);
        }

    }
}


----------------------------------------------------------------------------------------------------------------------------------




循环赋值Main的过程略







猜你喜欢

转载自blog.csdn.net/qq_33981438/article/details/80234834