1. RecyclerView是一个ViewGroup;
  2. LayoutManager控制RecyclerView的ChildView的布局显示,childview由Recycler提供以及管理;
  3. 效果图:安卓RecyclerView的使用安卓RecyclerView的使用

    MainActivity代码:

  4. package com.fabian.recyclerviewtest;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;
    import android.support.v7.widget.StaggeredGridLayoutManager;
    import android.view.animation.AlphaAnimation;
    import android.view.animation.AnimationSet;
    import android.view.animation.LayoutAnimationController;
    import android.view.animation.ScaleAnimation;
    
    import java.util.ArrayList;
    
    
    public class MainActivity extends Activity {
    
    private RecyclerView my_recycler_view;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    my_recycler_view= (RecyclerView) findViewById(R.id.my_recycler_view);
    ArrayList entities=new ArrayList<>();
    for(int i=0;i<<span style="color:#6897bb;">20;i++) {
    entities.add(newEntity("https://ss0.baidu.com/94o3dSag_xI4khGko9WTAnF6hhy/super/whfpf=425,260,50/sign=c5464b263cf33a879e38535aa061240a/2f738bd4b31c8701b1f47af0217f9e2f0708ff62.jpg", "亚裔小伙帮纽约流浪汉变帅哥 画面温馨"));
    entities.add(new Entity("https://ss0.baidu.com/-Po3dSag_xI4khGko9WTAnF6hhy/super/whfpf=425,260,50/sign=0cdecc1a76cf3bc7e8559eacb73d8e93/caef76094b36acaf450aa6eb7ad98d1001e99c3a.jpg", "英国蒸汽机集会 穿越时空回到蒸汽时代"));
    entities.add(new Entity("http://upload.cankaoxiaoxi.com/2015/0720/1437345130279.jpg", "世界冲浪冠军赛中选手遭鲨鱼袭击全程"));
    entities.add(new Entity("http://pic.miercn.com/uploads/allimg/150720/40-150H0091F1.jpg", "布隆迪小贩扒卡车回家 险象环生"));
    entities.add(newEntity("http://i2.chinanews.com/simg/hd/2015/07/20/200x133_4ac632f104504b52ae686d18a51674bd.jpg", "长春一高校广场上晾晒金针菇 造型似八卦阵"));
    entities.add(newEntity("http://i2.chinanews.com/simg/hd/2015/07/20/200x133_a84bbf720bec4acfb2a708ba481a3feb.jpg", "晒金针菇"));
    entities.add(newEntity("http://i2.chinanews.com/simg/hd/2015/07/20/200x133_865e3c7ea863461aabdd80e8c0e65de1.jpg", "广场上晒金针菇"));
    }
    RVAdapter rvAdapter=new RVAdapter(entities,this);
    
    LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
    // GridLayoutManager mLayoutManager=new GridLayoutManager(this,3);
    //StaggeredGridLayoutManager mLayoutManager=new StaggeredGridLayoutManager(2,1);
    my_recycler_view.setLayoutManager(mLayoutManager);
    
    my_recycler_view.setAdapter(rvAdapter);
    
    AnimationSet aset=new AnimationSet(false);
    ScaleAnimation sa=new ScaleAnimation(0f,1f,0f,1f,0.5f,0.5f);
    sa.setDuration(1500);
    AlphaAnimation aa=new AlphaAnimation(0f,1f);
    aa.setDuration(1500);
    aset.addAnimation(sa);
    aset.addAnimation(aa);
    LayoutAnimationController controller = new LayoutAnimationController(aset, 0.5f);
    controller.setOrder(LayoutAnimationController.ORDER_NORMAL);
    
    my_recycler_view.setLayoutAnimation(controller);
    }
    }
  5. Adapter代码:
  6. 
    
    package com.fabian.recyclerviewtest;
    
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.support.v7.widget.RecyclerView;
    import android.util.LruCache;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import com.android.volley.RequestQueue;
    import com.android.volley.toolbox.ImageLoader;
    import com.android.volley.toolbox.Volley;
    
    import java.util.ArrayList;
    
    
    public class RVAdapter extends RecyclerView.Adapter{
    private ArrayList entities;
    private Context context;
    private LayoutInflater inflater;
    private RequestQueue mRequestQueue;
    private final ImageLoader mImageLoader;
    
    public RVAdapter(ArrayList entities, Context context) {
    this.entities = entities;
    this.context = context;
    inflater=LayoutInflater.from(context);
    mRequestQueue= Volley.newRequestQueue(context);
    mImageLoader=new ImageLoader(mRequestQueue,new MyCache());
    }
    
    @Override
    public MyHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View view=inflater.inflate(R.layout.item_layout,viewGroup,false);
    MyHolder myHolder=new MyHolder(view);
    return myHolder;
    }
    @Override
    public void onBindViewHolder(MyHolder viewHolder, int i) {
    viewHolder.tv.setText(entities.get(i).getContent());
    ImageLoader.ImageListener listener = ImageLoader.getImageListener(viewHolder.iv,android.R.drawable.ic_menu_rotate, android.R.drawable.ic_delete);
    mImageLoader.get(entities.get(i).getUrl(), listener);
    mRequestQueue.start();
    }
    @Override
    public int getItemCount() {
    return entities.size();
    }
    }
    class MyHolder extends RecyclerView.ViewHolder
    {
    TextView tv;
    ImageView iv;
    public MyHolder(View itemView) {
    super(itemView);
    tv= (TextView) itemView.findViewById(R.id.textView);
    iv= (ImageView) itemView.findViewById(R.id.imageView);
    }
    }
    
    class MyCache implements ImageLoader.ImageCache
    {
    private LruCache,Bitmap> cache;
    public MyCache()
    {
    cache=new LruCache, Bitmap>(8*1024*1024)
    {
    @Override
    protected int sizeOf(String key, Bitmap bitmap) {
    return bitmap.getRowBytes() * bitmap.getHeight();
    }
    };
    }
    @Override
    public Bitmap getBitmap(String s) {
    return cache.get(s);
    }
    @Override
    public void putBitmap(String s, Bitmap bitmap) {
    cache.put(s,bitmap);
    }
    }
  7. Entity代码:
  8. 
    
    package com.fabian.recyclerviewtest;
    
    
    public class Entity {
    private String url;
    private String content;
    
    public Entity(String url, String content) {
    this.url = url;
    this.content = content;
    }
    
    public String getUrl() {
    return url;
    }
    
    public void setUrl(String url) {
    this.url = url;
    }
    
    public String getContent() {
    return content;
    }
    
    public void setContent(String content) {
    this.content = content;
    }
    }