RecycleView的最基本用法

学习了Android这么久,做项目时都是首选ListView,基本上没用过RecycleView,因为ListView实现起来比较简单。。。。RecycleView是V7包下面的,首先添加依赖包

compile 'com.android.support:recyclerview-v7:24.0.0'

下面是最基本的ReCycleView的用法:

mRecyclerView = findView(R.id.id_recyclerview);

//设置布局管理器

mRecyclerView.setLayoutManager(layout);

//设置adaptermRecyclerView.setAdapter(adapter)

//设置Item增加、移除动画

mRecyclerView.setItemAnimator(new DefaultItemAnimator());

//添加分割线

mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.HORIZONTAL_LIST));


public class HomeActivity extends ActionBarActivity{
    private RecyclerView mRecyclerView;
    private List<String> mDatas;
    private HomeAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_single_recyclerview);


        initData();
        mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);      

	    adapter = new HomeAdapter(this,list);
	    LinearLayoutManager manager = new LinearLayoutManager(this);
	    manager.setOrientation(1);//O为横向,1为纵向
	    recyclerView.setLayoutManager(manager);
	    recyclerView.setAdapter(adapter);
    }


    protected void initData(){
        mDatas = new ArrayList<String>();
        for (int i = 0; i < 20; i++)
        {
            mDatas.add("我是RecycleView");
        }
    }

    class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>{

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

        @Override
        public void onBindViewHolder(MyViewHolder holder, int position){
            holder.tv.setText(mDatas.get(position));
        }

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

	    class MyViewHolder extends RecyclerView.ViewHolder
	    {

        	ImageView tv;

   	     public MyViewHolder(View view)
  	      {
       	     super(view);
      	      tv = (ImageView) view.findViewById(R.id.item_image);
   	      }
	    }

    }
}

RecycleView的ViewHolder是要自己写的,在建立Adapter的时候要重写三个方法,onCreateViewHolder中通过构造方法将布局传到ViewHolder中,ViewHolder中在findViewById控件,onBindViewHolder方法中可以给控件绑定数据。


用RecycleView写瀑布流很简单,把设置布局管理器改一改,然后在把控件的高度取随机数就ok了。

第一步:设置布局管理器

		StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(5,1);//5是几行或者几列,根据第二个参数,0为横向
		manager.setOrientation(1);//O为横向,1为纵向
		recyclerView.setLayoutManager(manager);
	第二步:控件随机高度
 
 
		Random r = new Random();
		int randomInt = r.nextInt(180) + 60;
		LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) holder.tv.getLayoutParams();
		params.height = randomInt;
		holder.tv.setLayoutParams(params);
瀑布流就简单的完成了。这是最基本的用法,我自己还在学习当中。和我一样的菜鸟也要赶紧起飞。
		

猜你喜欢

转载自blog.csdn.net/zzh414323/article/details/52798338