RecycleView的基本用法

65 阅读1分钟

RecycleView的用法

==============

  1. build.gradle中加入:

    
    compile 'com.android.support:recyclerview-v7:23.1.1'
    
    
  2. 布局文件引入:

    
    <android.support.v7.widget.RecyclerView
    
        android:id="@+id/recyclerView"
    
        android:layout_width="match_parent"
    
        android:layout_height="match_parent" />
    
    
  3. 代码:

    
    RecyclerView recycleView = (RecyclerView) findViewById(R.id.recyclerView);
    
    
  4. 准备要填充的数据

    
    private void initData() {
    
            urls = new ArrayList<>();
    
            urls.add(url1);
    
            urls.add(url2);
    
            urls.add(url3);
    
            urls.add(url4);
    
            urls.add(url5);
    
            urls.add(url6);
    
            urls.add(url7);
    
            urls.add(url8);
    
            urls.add(url9);
    
            urls.add(url10);
    
        }
    
    
  5. 准备适配器

    
    public class MyAdapter extends RecyclerView.Adapter<MyVH> {
    
                private Context context;
    
                private List<String> urls;
    
    
    
                public MyAdapter(Context context, List<String> urls) {
    
                    this.context = context;
    
                    this.urls = urls;
    
                }
    
    
    
                //★1.onCreateViewHolder:
    
                //充气Item的View,并且以此View作为一个参数创建ViewHolder,并且返回此VH
    
                @Override
    
                public MyVH onCreateViewHolder(ViewGroup parent, int viewType) {
    
                    LayoutInflater inflater = LayoutInflater.from(context);
    
    // 要按照下面方式inflate布局,不然会出现match_parent无效,另外要让recyclerView宽高为match_parent(不一定)
    
                    View view = inflater.inflate(R.layout.item, parent,false);
    
                    return new MyVH(view);
    
                }
    
    
    
                //★2.onBindViewHolder:
    
                //在这里把List里的数据绑定到Item控件上
    
                @Override
    
                public void onBindViewHolder(MyVH holder, int position) {
    
                    Picasso.with(context).load(urls.get(position)).resize(300, 300).error(R.mipmap.qq).placeholder(R.mipmap.ic_launcher).into(holder.iv);
    
                }
    
    
    
                //★3.getItemCount
    
                //返回List的长度
    
                @Override
    
                public int getItemCount() {
    
                    return urls.size();
    
                }
    
    
    
                //★★★创建一个VH的子类,在这里执行findViewById,找到所有需要的控件
    
                public class MyVH extends RecyclerView.ViewHolder {
    
                    public ImageView iv;
    
                    public MyVH(View itemView) {
    
                        super(itemView);
    
                        iv = (ImageView) itemView.findViewById(R.id.iv);
    
                    }
    
                }
    
            }